Dart列表
在 Dart 中,数组是 List 对象,因此大多数人直接称它们为列表,Dart 列表字面量由用方括号 ([]) 括起来的逗号分隔的元素列表表示。每个元素通常是一个表达式。以下是一个简单的 Dart 列表:
var list = [1, 2, 3]; //自动推断为List<int>类型
Dart 推断 list 的类型为 List<int>。如果您尝试将非整数对象添加到此列表中,分析器或运行时将引发错误
1、动态类型列表
使用var自动推断的列表也叫动态类型列表,动态类型列表的特点是列表中元素可以有不同的类型,语法如下:
var lists = [1,'hello',true]; //var声明,包含各种类型
或
List lists = [1,'hello',true];//List声明,包含各种类型


2、强类型列表
强类型列表在声明的时候要指定列表中元素的类型,因此列表中元素类型单一,语法如下:
var lists = <int>[1,2,3,4,]; //只能是int
或
List<int> newlists = [1,2,3,4,]


可以在 Dart 集合字面量中的最后一项后添加逗号。这个尾随逗号不会影响集合,如下:
var list = [1, 2, 3,]; //3后面多了一个逗号
3、访问列表
列表使用基于零的索引,其中 0 是第一个元素的索引,list.length-1 是最后一个元素的索引。
可以使用 .length 属性获取列表的长度,并使用下标运算符 ([]) 访问列表的元素,如图:


通过for循环遍历列表,如图:


4、要创建编译时常量列表,请在列表字面量前添加 const,此时列表不可修改,如下:
var Lists = const <int>[1, 2, 3];
//Lists[2] = 10; 将会报错,因为不可修改,但是Lists可以重新赋值
Lists = [5,6,7,8]; //可以重新赋值
如果要创建不可重新赋值的列表变量,可以使用final,如下:
final Lists = const <int>[1,2,3];
Lists = [5,6,7]; //报错,不可以重新赋值
如果使用final声明变量但是集合没有使用const,那么Lists不能重新赋值但是可以修改它的值,如下:
final Lists = <int>[1,2,3];//没有使用const
Lists[1] = 8; //列表变为[1,8,3]
5、判断一个变量是不是列表,可以使用if循环,如下:
var lists = <int>[1, 2, 3, 4]; //强类型,只能是int
//判断是否为List
if (lists is List) {
print('yes');
} else {
print('no');
}


