首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么snapshot.data给我“对象”,但它没有给我未来的回报?

为什么snapshot.data给我“对象”,但它没有给我未来的回报?
EN

Stack Overflow用户
提问于 2022-02-07 15:44:27
回答 1查看 29关注 0票数 1

我想一步一步地学习颤振,我创建了UI,现在我想要创建假的防火墙,稍后我将实现真正的防火墙,我将使用cubit,然后进行集团。

我发现了这个错误,我不知道如何删除它:"AsyncSnapshot快照参数类型'Object?‘不能分配给参数类型’FirstListModel‘。“

这是我在尝试实现假防火墙之前的代码,就像我现在试图做的那样:

代码语言:javascript
复制
itemBuilder: (context, index) {
                    final oneElement = firstList[index];
                    return buildPlate(index,await oneElement);
                  },

这个itemBuilder在"ReorderableListView“里面。现在,我更进一步,并试图实现我的fakeFirebase:

代码语言:javascript
复制
itemBuilder: (context, index) {
                    return FutureBuilder(
                      future: fakeFirebase.getElement(index.toString()),
                      builder: (context, snapshot) {
                        if (snapshot.hasData) {
                          return buildPlate(index, snapshot.data);
                        } else {
                          return const CircularProgressIndicator();
                        }
                      },
                    );
                  },

在上面的代码中,我在"snapshot.data“中出现了错误

为了更好地理解,这是我来自fakeFirebase的功能:

代码语言:javascript
复制
  @override
  Future<FirstListModel> getElement(String? id) async {
    FirstListModel error = FirstListModel(text: "error", id: "404");
    if (id != null) {
      return firstList[int.parse(id)];
    }
    return error;
  }

这就是我的模型:

代码语言:javascript
复制
class FirstListModel {
  String text;
  String id;
  FirstListModel({
    required this.text,
    required this.id,
  });
}

这是我的“buildPlate”的开始:

代码语言:javascript
复制
Widget buildPlate(int index, FirstListModel oneElement) => ListTile(

如果我需要张贴更多我的代码,可以自由地问,这是我自己的应用,只是李尔-颤栗。

"firstList“是一个模型列表,它包含将由用户添加的对象,模拟防火墙。

EN

回答 1

Stack Overflow用户

发布于 2022-02-07 15:54:28

定义未来构建器的类型参数,并使用snapshot.data运算符将!转换为非空

代码语言:javascript
复制
return FutureBuilder<FirstListModel>(
                      future: fakeFirebase.getElement(index.toString()),
                      builder: (context, snapshot) {
                        if (snapshot.hasData) {
                          return buildPlate(index, snapshot.data!);
                        } else {
                          return const CircularProgressIndicator();
                        }
                      },
                    );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71021362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档