在 Flutter 空安全中使用列表让我感到困惑

Using a List in Flutters null safety is confusing me

我正在尝试将现有的小型 Flutter 应用程序迁移到 Flutter 2.12。空安全是新事物,但仍然让我感到困惑。在大多数情况下,我已经成功地解决了迁移中的错误,但我还没有找到解决这个问题的方法。我们开始吧:

我有一个简单的 ProductListclass 定义如下:

class ProductList {
  int count = 0;
  List<Product> rows = [];
}

class 中不存在错误。在我的 main.dart class 中,我使用 ListView 查看列表。在创建 ListTile 的方法中,引用 productList.rows 变量的两行都显示错误。这是代码:

eturn ListView.separated(
          separatorBuilder: (context, index) => Divider(
                color: Colors.black,
              ),
          shrinkWrap: true,
          padding: const EdgeInsets.all(2.0),
          itemCount: productList.***rows***.length,
          itemBuilder: (context, i) {
            return _buildRow(productList.***rows***[i]);
          });

这些行的错误消息是:

无法无条件访问属性'rows',因为接收者可以是'null'。 尝试使访问有条件(使用'?.')或向目标添加空检查('!')。

我在这些行中添加了 '?' 的每个组合和 '!'随着时间的推移,仍然没有运气。我确定我忽略了一些简单的东西,但我不知道那是什么。我是 null safety 的新手,所以我仍处于学习曲线的底部,我发现的大多数官方文档都让我想起阅读 K&R(人群中老程序员的晦涩参考)。我哪里做错了?

将您的 productList 声明更改为 late ProductList productList;