我从Firestore示例中复制了一段代码:

Widget _buildBody(BuildContext context) {
    return new StreamBuilder(
      stream: _getEventStream(),
      builder: (context, snapshot) {
        if (!snapshot.hasData) return new Text('Loading...');
        return new ListView(
          children: snapshot.data.documents.map((document) {
            return new ListTile(
              title: new Text(document['name']),
              subtitle: new Text("Class"),
            );
          }).toList(),
        );
      },
    );
  }

但是我得到了这个错误

type 'List<dynamic>' is not a subtype of type 'List<Widget>'

这里出了什么问题?

推荐答案

这里的问题是,类型推断以意外的方式失败.解决方案是为map方法提供一个类型参数.

snapshot.data.documents.map<Widget>((document) {
  return new ListTile(
    title: new Text(document['name']),
    subtitle: new Text("Class"),
  );
}).toList()

更复杂的答案是,虽然children的类型是List<Widget>,但信息不会流向map调用.这可能是因为map后面紧跟着toList,而且无法对闭包的返回进行类型注释.

Flutter相关问答推荐

关闭视频通话,相机仍在运行!(Flutter WebRTC)

从底部开始固定,然后使其可拖曳Flutter

Android NFC未收到空的NFC标签

为什么Riverpod生成器在这种情况下不生成AsyncNotiator?

在Android Studio的新用户界面中未找到热重新加载

如何将 colored颜色 阴影作为默认容器 colored颜色 应用于自定义窗口小工具?

在Flutter 中实现中小型应用程序栏标题

抖动问题:检测到0个或2个或更多具有相同值的[DropdownMenuItem]

从图标启动器打开时,VSCode未检测到Web设备

如何使listview.builder在筛选列表后实时更新

请求已在 flutter 中发送到 django 服务器,并且已返回响应,但条件仍然为 false

Riverpod Provider.family 和 HookConsumerWidget 不刷新 UI

Flutter如何在容器外创建环形进度条

Riverpod 2.3.6:AutoDisposeNotifier和ref.onDispose自动处理

Flutter可滚动定位列表支持rtl方向吗?

如何在 flutter 中同时使用 ButtonStyle() 和 ElevatedButton.styleFrom() ?

按下 Command+W 时关闭窗口

在 Flutter 中,您什么时候应该更喜欢Widget继承而不是组合?

运行Flutter 测试时出现 FirebaseAppPlatform.verifyExtends 错误

如何从用户 Flutter 导航抽屉中隐藏管理菜单