颤振错误->必须初始化不可为空的“项目”

Posted

技术标签:

【中文标题】颤振错误->必须初始化不可为空的“项目”【英文标题】:Flutter Error -> Non-nullable 'items' must be initialized 【发布时间】:2021-10-29 09:06:18 【问题描述】:
class CatalogModel 
  static List<Item> items;
  static Item getById(int id) =>
      items.firstWhere((element) => element.id == id, orElse: null);
  static Item getByPosition(int pos) => items[pos];

我正在尝试使用静态列表“项目”创建类,但出现以下错误:

必须初始化不可为空的变量“items”。尝试添加一个 初始化表达式。

我该怎么办?

【问题讨论】:

静态列表 items = []; 【参考方案1】:

要么硬编码初始值,要么创建一个构造函数,以便用户将其传入:

选项 1

class CatalogModel 
  static List<Item> items=[];
  static Item getById(int id) =>
      items.firstWhere((element) => element.id == id, orElse: null);
  static Item getByPosition(int pos) => items[pos];

选项 2

class CatalogModel 
  final List<Item> items;
const CatalogModel(List<Item>? initialItems):items=initialItems??[];
   Item getById(int id) =>
      items.firstWhere((element) => element.id == id, orElse: null);
  Item getByPosition(int pos) => items[pos];

【讨论】:

【参考方案2】:

只需将此static List&lt;Item&gt; items; 转换为static List&lt;Item&gt; items = &lt;Item&gt;[];

【讨论】:

以上是关于颤振错误->必须初始化不可为空的“项目”的主要内容,如果未能解决你的问题,请参考以下文章

必须初始化不可为空的实例字段“taskTitle”

必须初始化不可为空的实例字段“_localizedStrings”

必须初始化不可为空的实例字段“_selectedSize”

Flutter-不可为空的实例字段'questionAnswer','questionText'必须初始化

为啥我收到警告说必须初始化一个不可为空的字段(当我确定我正在初始化它时)?

构造函数是在 C# 中初始化类中不可为空的属性的唯一方法吗?