Flutter——最详细数组List使用教程

1,插入元素 insert()

	List<int> leftList = [1, 2, 3, 4, 5, 6]
	leftList.insert(0, 0);
    print(leftList.toString());
    //[0, 1, 2, 3, 4, 5, 6]

2,插入一段素组元素 insertAll()

  List<int> leftList = [1, 2, 3, 4, 5, 6];
  List<int> rightList = [62, 23, 7, 9];
  leftList.insertAll(0, rightList);
  print(leftList.toString());
    //[62, 23, 7, 9, 1, 2, 3, 4, 5, 6]

3,尾部添加元素 add()

  List<int> leftList = [1, 2, 3, 4, 5, 6];
  leftList.add(7);
  print(leftList.toString());  
    //[1, 2, 3, 4, 5, 6, 7]

4,尾部添加素组 addAll

	List<int> leftList = [1, 2, 3, 4, 5, 6];
    leftList.addAll([8]);
    print(leftList.toString());
    //[1, 2, 3, 4, 5, 6, 8]

5,删除素组中的元素 remove

    leftList.remove(3);
    print(leftList.toString());
    //[1, 2, 4, 5, 6]

6,根据索引删除素组中的元素 removeAt

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    leftList.removeAt(4);
    print(leftList.toString());
    //[1, 2, 3, 4, 6]

7,删除索引0到3的元素 removeRange

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    leftList.removeRange(0, 3);
    print(leftList.toString());
    //[4, 5, 6]

8,删除数组最后一位元素 removeLast

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    leftList.removeLast();
    print(leftList.toString());
    //[1, 2, 3, 4, 5]

9,保存数组满足该条件的元素 removeWhere

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    leftList.removeWhere((element) => element.isOdd);
    print(leftList.toString());
    //[2, 4, 6]

10,替换索引1至4的元素 setRange

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    print(leftList.toString());
    leftList.setRange(1, 4, [1, 11, 2, 2]);
    print(leftList.toString());
    //[1, 1, 11, 2, 5, 6]

11,从索引3的位置,替换老元素, setAll

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    print(leftList.toString());
    leftList.setAll(3, [1, 11, 54]);
    print(leftList.toString());
    //[1, 2, 3, 1, 11, 54]

12,从索引3至4的位置,替换新素组,并保留尾部的元素 replaceRange

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    print(leftList.toString());
    leftList.replaceRange(3, 4, [1, 11, 2, 2]);
    print(leftList.toString());
    //[1, 2, 3, 1, 11, 2, 2, 5, 6]

13,从索引3至5的位置,将元素修改成2 fillRange

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    print(leftList.toString());
    leftList.fillRange(3, 5, 2);
    print(leftList.toString());
    // [1, 2, 3, 2, 2, 6]

14,获取索引1至5的元素 getRange

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    print(leftList.toString());
    var range = leftList.getRange(1, 5);
    print(range.toString());
    //(2, 3, 4, 5)

15,根据索引值,返回新的数组 sublist

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    print(leftList.toString());
    var range = leftList.sublist(3);
    print(range.toString());
    //[4, 5, 6]
    var ranges = leftList.sublist(3, 5);
    print(ranges.toString());
    //[4, 5]

16,判断素组是否 存在 满足该条件 any

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    print(leftList.toString());
    var any = leftList.any((element) => element > 3);
    print(any.toString());

17,判断数组是否 全员 满足该条件 every

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    print(leftList.toString());
    var any = leftList.every((element) => element > 3);
    print(any.toString());
    // false

18,打印数组最后一位满足改条件的元素,不满足则走 orElse方法 lastWhere

   List<int> leftList = [1, 2, 3, 4, 5, 6];

    /// 获取最后一个大于3的元素
    print(leftList.lastWhere((v) => v > 6));
    // 
    // leftList.firstWhere((element) => element > 6, orElse: () {
    // });

19,从数组中查找是否满足条件,并返回索引值 indexWhere

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    print(leftList.toString());
    //[1, 2, 3, 4, 5, 6]
    var indexWhere = leftList.indexWhere((element) => element > 7);
    print(indexWhere);
    // -1
    var indexWheres = leftList.indexWhere((element) => element > 1, 1);
    print(indexWheres);
    // 1

20,从最后一位开始查找,是否满足该条件的索引 lastIndexWhere

    List<int> leftList = [1, 2, 3, 4, 5, 2];
// 获取最后一个大于4的元素索引值
    print(leftList.lastIndexWhere((v) => v > 2)); // 5
// 从索引4开始,查询最后一个大于4的元素索引值
    print(leftList.lastIndexWhere((v) => v > 3, 4)); // 4
// 如果没有,返回-1
    print(leftList.lastIndexWhere((v) => v > 9)); // -1

21,数组是否存在该值 indexOf

    List<int> leftList = [1, 2, 3, 4, 5, 6];

    ///从索引 3 开始查找,获取第一次出现2的索引值,如果不存在,返回 -1
    print(leftList.indexOf(2, 3)); 
    //-1
    print(leftList.indexOf(5));
    //4

22,从最后面开始查找是否存在该值 lastIndexOf

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    print(leftList.toString());

    ///从索引 3 开始查找,倒序获取第一次出现2的索引值,如果不存在,返回 -1
    print(leftList.lastIndexOf(2, 3));
    //1
    print(leftList.lastIndexOf(6));
    //5
    print(leftList.lastIndexOf(9));
    //-1

23,判断是否存在该条件的元素 singleWhere

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    // 获取等于2的唯一元素,存在,返回2
    print(leftList.singleWhere((v) => v == 2));
//2
    // 获取等于6的唯一元素,存在该元素,但是出现次数不唯一,不会执行orElse,直接抛出错误,进入catch
    print(leftList.singleWhere((v) => v == 6));
//6
    // 获取大于6的唯一元素,不存在该元素,执行orElse
    print(leftList.singleWhere((v) => v > 6, orElse: () {
      return orElse(1);
    }));

24,将数组拼接成字符串 join

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    print(leftList.join('&'));
    //1&2&3&4&5&6

25,数组去重 toSet

   List<int> leftList = [1, 2, 3, 4,3, 5, 6];
    leftList.add(3);
    print(leftList.toSet());
    //[1, 2, 3, 4, 5, 6]

26,数组循环遍历 forEach

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    leftList.forEach((element) {
      print(element);
    });

    for (var element in leftList) {
      print(element);
    }

27,数组参数遍历 map

    List<int> leftList = [1, 2, 3, 4, 5, 6];
    var map = leftList.map((e) {
      return e + 2;
    });
    print(map.toString());
    // (3, 4, 5, 6, 7, 8)
    var map2 = leftList.map((e) {
      return e > 3;
    });
    print(map2.toString());
    // (false, false, false, true, true, true)

28,数组累加 reduce

   List<int> leftList = [1, 2, 3, 4, 5, 6];
    var reduce = leftList.reduce((value, element) {
      print('value = $value ; element = $element');
      return value + element;
    });
    print(reduce.toString());
 //   value = 1 ; element = 2
//value = 3 ; element = 3
//value = 6 ; element = 4
//value = 10 ; element = 5
//value = 15 ; element = 6
//21

29,数组 a-b 升序 ,b-a降序 sort

 List<int> leftList = [1, 2, 3, 4, 5, 6];
    rightList.sort((a, b) {
      return b - a;
    });
    print(rightList.toString());
    //b-a =  [6, 5, 4, 3, 2, 1]
    //a-b = [1, 2, 3, 4, 5, 6]

### 如何在 Flutter 中创建可滑动的列表组件 #### 使用 `ListView` 创建基本的可滑动列表 `ListView` 是常用的用于显示一系列项目的 widget,在垂直方向上默认是可滚动的。 ```dart import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @Override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: Text('Simple ListView')), body: ListView( children: [ ListTile(title: Text('Item 1')), ListTile(title: Text('Item 2')), // 更多项目... ], ), ), ); } } ``` 此代码片段展示了一个简单的应用,其主体部分由一个包含若干项的 `ListView` 组成[^2]。 #### 实现带有自定义控制器的 `ListView` 为了更精细地控制滚动行为,可以使用 `ScrollController` 来管理 `ListView` 的滚动状态: ```dart final ScrollController _controller = ScrollController(); // 在需要的地方初始化并附加给 ListView body: ListView(controller: _controller, children: [...]), ``` 当页面加载完成之后或者响应某些事件时,可以通过 `_controller.jumpTo()` 或者 `_controller.animateTo()` 方法改变当前滚动的位置[^3]。 #### 可重排序的列表——`ReorderableListView` 如果需求涉及到允许用户通过手势交互调整列表项顺序,则应考虑采用 `ReorderableListView`。这使得每一项都可以被长按拖拽至新位置从而实现动态排列功能[^1]。 ```dart List<String> items = ['Item A', 'Item B', 'Item C']; @override Widget build(BuildContext context) { return ReorderableListView( onReorder: (int oldIndex, int newIndex) { setState(() { if (newIndex > oldIndex) { newIndex -= 1; } final String item = items.removeAt(oldIndex); items.insert(newIndex, item); }); }, children: <Widget>[ for (var i = 0; i < items.length; ++i) ListTile( key: ValueKey(items[i]), title: Text(items[i]), tileColor: Colors.lightBlueAccent, ) ], ); } ``` 上述例子中实现了能够自由移动条目的界面效果,并且每当发生重新排序操作时都会更新数据源数组的内容以反映新的布局变化情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怀君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值