flutter - 有限数组上的无限循环
flutter - infinite loop on a finite array
我不明白为什么我的代码的结果是无限循环。
class _SearchUserState extends State<SearchUser> {
List usernames = [];
@override
Widget build(BuildContext context) {
var invitedBy = widget.snapshot.data()["invitedBy"];
final FirebaseFirestore _firestore = FirebaseFirestore.instance;
invitedBy.forEach((userId) async {
try {
var snap = await _firestore.collection('users').doc(userId).get();
var username = snap.data()!["username"];
print(username);
setState(() {
usernames.add(username);
});
} catch (err) {
print(err);
}
});
Text("invitedBy length ${invitedBy.length}"),
Text("usernames length ${usernames.length}")
对于最后两行代码,我得到:"invitedBy length 1"
,"usernames length + infinite number"
您正在 build
方法中调用 setState
。这会触发另一个构建,并再次调用 setState
,依此类推...
我不明白为什么我的代码的结果是无限循环。
class _SearchUserState extends State<SearchUser> {
List usernames = [];
@override
Widget build(BuildContext context) {
var invitedBy = widget.snapshot.data()["invitedBy"];
final FirebaseFirestore _firestore = FirebaseFirestore.instance;
invitedBy.forEach((userId) async {
try {
var snap = await _firestore.collection('users').doc(userId).get();
var username = snap.data()!["username"];
print(username);
setState(() {
usernames.add(username);
});
} catch (err) {
print(err);
}
});
Text("invitedBy length ${invitedBy.length}"),
Text("usernames length ${usernames.length}")
对于最后两行代码,我得到:"invitedBy length 1"
,"usernames length + infinite number"
您正在 build
方法中调用 setState
。这会触发另一个构建,并再次调用 setState
,依此类推...