大家好这是我的全部方法:

Future<void> init() async {
    FirebaseAuth.instance.userChanges().listen((user) {
      if (user != null) {
        _loginState = ApplicationLoginState.loggedIn;
        _guestBookSubscription = FirebaseFirestore.instance
            .collection('guestbook')
            .orderBy('timestamp', descending: true)
            .limit(3)
            .snapshots()
            .listen((snapshot) {
          _guestBookMessages = [];
          snapshot.docs.forEach((document) {
            _guestBookMessages.add(
              GuestBookMessage(
                name: document.data()['name'] as String,
                message: document.data()['text'] as String,
              ),
            );
          });
          notifyListeners();
        });
      } else {
        _loginState = ApplicationLoginState.loggedOut;
        _guestBookMessages = [];
        _guestBookSubscription?.cancel();
      }
      notifyListeners();
    });
  }

dart 抱怨的是这一点:

snapshot.docs.forEach((document) {
            _guestBookMessages.add(
              GuestBookMessage(
                name: document.data()['name'] as String,
                message: document.data()['text'] as String,
              ),
            );
          });

如何才能在不 destruct 整个功能的情况下更改此方法? 我只是在找一种能让达特开心的方法. 我很感谢你事先的帮助.

推荐答案

避免将forEach与函数文字一起使用.

BAD:

snapshot.docs.forEach((document) {
  ...
});

GOOD:

for (var document in snapshot.docs) {
  // Rest of your code
}

Flutter相关问答推荐

实现Popscope在按下返回按钮两次后退出应用程序

如何刷新future 的构建器时,没有OBS变量的内部在Ffltter?

为什么要在值列表中两次放入空安全性

我不能在Fighting中裁剪图片输入错误,否则应用程序会崩溃

如何将Visual Studio代码中Flutter 应用的包名从com.example.XXX更改为Play Store中受限制的包名称

如何使页面浏览量达到活动页面所要求的高度?

分页控制器在到达页面末尾之前或在初始化页面时对每个索引调用API

如何将请求字段正确添加到DART多部分请求

集装箱堆放和定位时的高度问题

Riverpod 2.0-如何使用FutureOr和AutoDisposeSyncNotificationer处理api状态代码?

尽管设置了对齐方式,如何对齐列中的行?

在 Flutter 中解码 BLE 设备负载

网页浏览器不支持鼠标滚动的行项目

如何将行推到列的底部

如何将金钱格式化为数以百万计的Flutter 动?

如何从 showModalBottomSheet 中的 topRight 和 topLeft 移除平边

如何在 Flutter 执行通知时运行后台代码?

无法在 flutter 中更新 void 方法内的变量值

Flutter 在气泡聊天消息上对齐时间戳文本

如何在flutter中共享容器和gridview之间的滚动条?