1

目前,我正在更新基于以前版本开发的 Flutter 项目的代码库。一旦我们更新到最新版本的 Dart 和 Flutter,就会发生错误。

这里的代码与我们从FutureBuilder.

          body: new FutureBuilder<List>(
            future: getData(),
            builder: (context, snapshot) {
              if (snapshot.hasError) print(snapshot.error);

              return snapshot.hasData
                  ? new ItemList(
                      list: snapshot.data, <--- error in here
                    )
                  : new Center(
                      child: new CircularProgressIndicator(),
                    );
            },
          ),

颤振版本:2.2.2

飞镖版本:2.13.3

请帮我指出我应该为这个处理的部分。谢谢!

4

2 回答 2

4

snapshot.data可以为 null,但ItemList该类list不接受任何null值。这就是您收到此错误的原因。

如果您可以确保,snapshot.data将始终为非空值,那么您应该使用它snapshot.data!来避免此错误。但是如果有任何机会snapshot.data可以为空,那么snapshot.data!会给你另一个例外。在这种情况下,您应该使用

ItemList(
           list: snapshot.data??[],
         )
于 2021-06-28T01:25:16.360 回答
2

null-safety这是由于添加到 Dart的新功能而引起的错误。

根据您希望如何处理null值,ItemList您应该更新您的代码ItemList以接受null(即定义listList? list)或更新snapshot.datasnapshot.data??并提供一个值何时snapshot.datanull

补充阅读:

  1. 你可以在这里阅读更多关于它的信息
  2. 您还可以在此处遵循有关迁移到 null-safety 的指南
于 2021-06-28T01:15:18.770 回答