Flutter创建Offset列表报错:空安全下默认List构造函数不可用
如何在Dart空安全模式下创建长度为6的Offset列表
Dart启用空安全后,原有的List<T>(length)构造函数被禁用——因为它会生成包含null的列表,而Offset是不可空类型,因此需要使用官方推荐的List.filled、List.generate或列表字面量来创建。以下是三种可行的实现方式:
1. 使用List.filled(统一初始值)
适合需要所有元素初始化为同一个固定值的场景,比如全部设为Offset.zero:
// 创建固定长度列表,所有元素为Offset.zero final List<Offset> p = List.filled(6, Offset.zero); // 若需要可增长的列表(后续可添加/删除元素),添加growable参数 final List<Offset> p = List.filled(6, Offset.zero, growable: true);
2. 使用List.generate(自定义初始值)
适合需要为每个索引生成不同初始值的场景,比如按索引生成偏移量:
// 按索引生成不同的Offset(示例:(0,0), (1,1), ..., (5,5)) final List<Offset> p = List.generate(6, (index) => Offset(index.toDouble(), index.toDouble())); // 也可以用它生成统一初始值(和List.filled效果一致) final List<Offset> p = List.generate(6, (_) => Offset.zero);
默认生成的是可增长列表,若需要固定长度,添加growable: false参数即可。
3. 使用列表字面量(已知具体元素)
如果已经明确每个位置的Offset值,直接用字面量声明最直观:
final List<Offset> p = [ Offset(0, 0), Offset(10, 20), Offset(30, 40), Offset(50, 60), Offset(70, 80), Offset(90, 100), ]; // 转为固定长度列表 final List<Offset> p = [/* 元素 */].toList(growable: false);
内容的提问来源于stack exchange,提问作者Mohammad Faizan
相关产品推荐
相关产品推荐

