第一章 Flutter数组的使用
在使用flutter开发已经有一段时间了,在之前都是快速开发,没有时间去复盘自己的知识体系,现在就从flutter的基本语法开始,一步步分析flutter涉及到的细节问题,希望对你有所帮助。
提示:以下是本篇文章正文内容,下面案例可供参考
dart使用var关键字声明参数,会自动推断类型。
var array = [];
var array1 = [1,2,3];
var array = ['string'];
var array1 = ['123','456'];
List array3 = ['789'];
class PersonModel {
int id;
PersonModel(this.id);
}
var array = [PersonModel(1)];var array1 = [PersonModel(2), PersonModel(3)];List array3 = [PersonModel(4)];
var list = List.filled(5,' ');// 字符串数组[' ',' ',' ',' ',' ']
var list1 = List.filled(5, ''); // 字符串数组
var list2 = List.filled(5, '');// 混合类型固定长度数组
var list2 = List.filled(5, PersonModel(1));// 类型为PersonModel的数组
var list = [1,2,3];
print("数组长度==${list.length}");//数组长度==3
var list = [1,2,3];
print("数组翻转==${list.reversed}");//数组翻转==(3, 2, 1)
.isEmpty为空true 不为空false
var list = [1,2,3];
print("是否为空==${list.isEmpty}");//是否为空==falsevar list1 = [];
print("是否为空==${list1.isEmpty}");//是否为空==true
.isNotEmpty 为空false 不为空true
var list = [1,2,3];
print("是否不为空==${list.isNotEmpty}");//是否不为空==truevar list1 = [];
print("是否不为空==${list1.isNotEmpty}");//是否不为空==false
var list = [1,2,3];
print("获取第一个元素==${list.first}");//获取第一个元素==1
var list = [1,2,3];
print("获取最后一个元素==${list.last}");//获取最后一个元素==3
//void add(E value);
var list = [1, 2, 3];
list.add(4);
print("增加元素==${list}"); //增加元素==[1, 2, 3, 4]
//void addAll(Iterable iterable);
var list = [1, 2, 3];
list.addAll([4,5,6]);
print("拼接数组==${list}"); //拼接数组==[1, 2, 3, 4,5,6]
//void insert(int index, E element);
//主页index下标不能大于数组长度加1,如下在下标为3是可以插入数据的,如果下标大于length+1就会报错
var list = [1, 2, 3];
list.insert(3, 4);
print("插入元素==${list}"); //插入元素==[1, 2, 3, 4]
//void insertAll(int index, Iterable iterable);
var list = [1, 2, 3];
list.insertAll(3, [4,5]);
print("插入数组==${list}"); //插入数组==[1, 2, 3, 4, 5]
//bool remove(Object? value);
var list = [1, 2, 3];
bool isSuccess = list.remove(3);
print("是否删除成功==${isSuccess}");//是否删除成功==true
print("删除元素==${list}"); //删除元素==[1, 2]
//E removeAt(int index);
var list = [1, 2, 3];
int value = list.removeAt(2);
print("删除的元素是==${value}");
print("通过下标删除元素==${list}"); //通过下标删除元素==[1, 2]
//E removeLast();
var list = [1, 2, 3];
int value = list.removeLast();
print("删除的元素是==${value}");
print("list==${list}"); //list==[1, 2]
//void removeRange(int start, int end);
var list = [1, 2, 3, 4, 5, 6];
list.removeRange(2, 4);
print("list==${list}"); //list==[1, 2, 5, 6]
//void removeWhere(bool test(E element));
var list = [1, 2, 3, 4, 5, 6];
list.removeWhere((element) => element > 4);
print("list==${list}"); //list==[1, 2, 3, 4]
//void clear();
var list = [1, 2, 3, 4, 5, 6];
list.clear();
print("list==${list}"); //list==[]
//void setRange(int start, int end, Iterable iterable, [int skipCount = 0]);
var list = [1, 2, 3, 4, 5, 6];
list.setRange(2, 5, [1, 1, 1, 1]);
print("list==${list}"); //list==[1, 2, 1, 1, 1, 6]
//为什么?替换下标是2<=x<5,更新的数组值也只去2,3,4下标的值,使用的时候需要注意!而且替换下标的数要小于替换数组,不然报错
//skipCount 默认为0,表示从第几位开始选取指定数组的值,使用概率较低
//void setAll(int index, Iterable iterable);
var list = [1, 2, 3, 4, 5, 6];
list.setAll(2, [1, 8, 1, 1]);
print("list==${list}"); //list==[1, 2, 1, 8, 1, 1]
//也要注意数组越界问题
//void fillRange(int start, int end, [E? fillValue]);
var list = [1, 2, 3, 4, 5, 6];
list.fillRange(2, 5, 8);
print("list==${list}"); //list==[1, 2, 8, 8, 8, 6]
//void replaceRange(int start, int end, Iterable replacements);
var list = [1, 2, 3, 4, 5, 6];
list.replaceRange(2, 5, [8, 9]);
print("list==${list}"); //list==[1, 2, 8, 9, 6]
把字典里key或value的值抽离出来变成数组
// List toList({bool growable = true}) {
// return List.of(this, growable: growable);// }
final planets = {1: 'Mercury', 2: 'Venus', 3: 'Mars'};final keysList = planets.keys.toList(growable: false); // [1, 2, 3]final valuesList =planets.values.toList(growable: false); // [Mercury, Venus, Mars]
var list = [1, 2, 3, 4, 5, 6];
var string = list.join('=');
print("string==${string}"); //string==1=2=3=4=5=6
//int indexOf(E element, [int start = 0]);
//可以设置开始查找的位置下标
//不存在返回-1
var list = [1, 2, 3, 4, 5, 6];
var index = list.indexOf(5);
print("index==${index}"); //index==4
//int lastIndexOf(E element, [int start = 0]);
//可以设置开始查找的位置下标
//不存在返回-1
var list = [1, 2, 3, 4, 5, 6];
var index = list.lastIndexOf(3);
print("index==${index}"); //index==2
//List sublist(int start, [int? end]);
var list = [1, 2, 3, 4, 5, 6];
var array = list.sublist(3, 4);
print("array==${array}"); //array==[4]
//Iterable getRange(int start, int end);
var list = [1, 2, 3, 4, 5, 6];
var array = list.getRange(3, 5);
print("array==${array}"); //array==(4, 5)
//bool any(bool test(E element))
var list = [1, 2, 3, 4, 5, 6];
var bool = list.any((value) => value > 5);
print("bool==${bool}"); //bool==true
//bool contains(Object? element)
var list = [1, 2, 3, 4, 5, 6];
var bool = list.contains(6);
print("bool==${bool}"); //bool==true
//E firstWhere(bool test(E element), {E orElse()?})
var list = [1, 2, 3, 4, 5, 6];
var value = list.firstWhere((value) => value > 3);
print("value==${value}"); //value==4
//E lastWhere(bool test(E element), {E orElse()?})
var list = [1, 2, 3, 4, 5, 6];
var value = list.lastWhere((value) => value > 3);
print("value==${value}"); //value==6
如果需要遍历数组,获取某个item的下标,就可以用这个方法了
//int indexWhere(bool test(E element), [int start = 0]);
var list = [1, 2, 3, 4, 5, 6];
var index = list.indexWhere((value) => value == 3);
print("index==${index}"); //index==2
//int lastIndexWhere(bool test(E element), [int? start]);
var list = [1, 2, 3, 4, 3, 6];
var index = list.lastIndexWhere((value) => value == 3);
print("index==${index}"); //index==4
//E singleWhere(bool test(E element), {E orElse()?})
var list = [1, 2, 3, 4, 3, 6];var value = list.singleWhere((element) => element > 7, orElse: () {print("不存在这个元素,返回1");return 1;});print("value==${value}"); //value==1}
会变成集合类型
var list = [1, 2, 3, 3, 4, 4, 5, 6];
var value = list.toSet();
print("value==${value}"); //value=={1, 2, 3, 4, 5, 6}
var list = [1, 2, 3, 3, 4, 4, 5, 6];
var value = list.map((e) => e > 3);
print("value==${value}"); //value==(false, false, false, false, true, true, true, true)
var list = [1, 2, 3, 4];
for (var i = 0; i < list.length; i++) {print("value==${list[i]}");
}
// flutter: value==1
// flutter: value==2
// flutter: value==3
// flutter: value==4
var list = [1, 2, 3, 4];
for (var value in list) {print("value==$value");
}
// flutter: value==1
// flutter: value==2
// flutter: value==3
// flutter: value==4
var list = [1, 2, 3, 4];
var value = list.reduce((value, element) => value + 1);
print('value==$value');
var list = [1, 2, 3, 4];
list.sort();
print('value==$list');
例如:以上就是今天要讲的内容,本文仅仅简单介绍了数组的使用,而数组List提供了大量能使我们快速便捷地处理数据的函数和方法。希望文章对你有所帮助,后续继续完善。