【问题标题】:Included null safety libs and now code is not running包含空安全库,现在代码未运行
【发布时间】:2021-11-11 02:44:33
【问题描述】:

我使用了空安全库。现在我遇到了这个问题。请看截图。 即使添加了一个空检查,它也不会。

body: FutureBuilder(
    future: allPerson(),
    builder: (context, snapshot) {
      if (snapshot.hasError) print(snapshot.error);
      return snapshot.hasData
          ? ListView.builder(
              itemCount: snapshot.data.length,
              itemBuilder: (context, index) {
                List list = snapshot.data;
                return Card(
                  child: ListTile(
                    title: Container(
                      width: 100,
                      height: 100,
                      child: Image.network(
                          "http://192.168.1.101/image_upload_php_mysql/uploads/${list[index]['image']}"),
                    ),
                    subtitle: Center(child: Text(list[index]['name'])),
                  ),
                );
              })
          : Center(
              child: CircularProgressIndicator(),
            );
    },
  ),

谢谢。

【问题讨论】:

  • 分享你的代码而不是图片
  • 我们不是来自己提供所有代码的。不仅包括屏幕截图,还包括您的代码。
  • 请参考我的答案,了解长度未定义错误:stackoverflow.com/questions/69142424/…
  • 已添加代码。谢谢
  • 请 ```builder: (context, snapshot) {```` 将鼠标悬停在构建器上,您会发现快照查询返回的响应类型。如果可能,然后尝试添加显示查询

标签: flutter dart


【解决方案1】:

您可以为 future 函数为 snapshot 数据返回的值指定一个类型。

FutureBuilder<List<dynamic>>(
        future: allPerson(),
        builder: (context, AsyncSnapshot<List<dynamic>> snapshot) {
          if (snapshot.hasError) print(snapshot.error);
          return snapshot.hasData
              ? ListView.builder(
                  itemCount: snapshot.data!.length,
                  itemBuilder: (context, index) { ...

【讨论】:

    【解决方案2】:

    在 null 安全中,您不能将可为 null 的变量(可以设置为 null 的变量)设置为不可为 null 的变量(不接受 null 值的变量)。
    这里的 itemCount 是不可为空的变量,但是变量 data 是可以为空的,并且可能无法访问可变长度。

    itemCount: snapshot.data.length
    

    尝试将其更改为以下代码

    itemCount: snapshot.data?["length"] ?? 0
    

    【讨论】:

    • @JituSingh 已经为你更新了我的答案,你应该试试
    【解决方案3】:

    只要这样做 itemCount: snapshot.data!.length

    问题就解决了

    【讨论】:

    • 没有为“对象”类型定义吸气剂“长度”。创建变量但没有运气。
    【解决方案4】:

    snapshot.data 可以为空。所以你应该使用 snapshot.data?.length ?? 0

    所以如果 snapshot.data 为空,那么它会将长度设置为 0。

    【讨论】:

    • getter 'length' 没有为类型 'Object' 定义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2015-05-15
    相关资源
    最近更新 更多