大家好,这是我的整个方法:
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,
),
);
});
型
我怎样才能在不破坏整个功能的情况下改变这个方法呢?我只是在寻找一种让dart高兴的方法。
3条答案
按热度按时间mwngjboj1#
避免将forEach与函数字面量一起使用。
避免:
字符串
好:
型
iklwldmw2#
以
data.forEach(function);
为例:字符串
这是我的意见
我认为
forEach
似乎比for
循环更复杂,forEach
不能使用continue
和break
(return
可用,但使用return
时不会发生任何事情)。型
我认为当你的
forEach
循环看起来像下面的代码时,我们应该使用for
而不是forEach
循环,因为正如我所说,for
循环比forEach
有更多的选项。型
我认为
forEach
循环用于简短的代码(易于理解),当你想做一些你不关心结果的事情时,就像这段代码(与Function(dynamic)
一起使用)。型
确保数据类型和函数(类型)相同。
型
我是这样写的。我觉得很容易读懂。
型
xkftehaa3#
使用
await for
:字符串