You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:20:31