gpt4 book ai didi

dart - 使用 flutter 的多用户应用程序

转载 作者:IT王子 更新时间:2023-10-29 07:21:15 28 4
gpt4 key购买 nike

我正在开发一个有多个用户的应用程序。我有一个资源列表,这个资源列表就像一个巧克力列表(只有一个并且是唯一的)。现在,我在所有活跃用户的主屏幕上展示这种巧克力。现在,用户可以点击巧克力,巧克力就会送给他们。但是,当发生这种情况时,我想刷新所有登录用户,以确保没有两个用户吃到相同的巧克力。

我正在使用数据库触发器来监控数据库中的变化。我能够做到这一点,但我关心的是如何刷新 listView。

我的算法如下:

1) 监控数据库中的变化。2)获取新的数据集。3) 更新 View

我尝试如下创建 syncDatabaseFunction:

  Future syncDatabaseFunction() async {
CollectionReference reference = Firestore.instance.collection('Chocolates');
reference.snapshots().listen((querySnapshot){
querySnapshot.documentChanges.forEach((change){
print("Changed Chocolate");
BackendOperations.getAllChocolates().then((value){

var chocolateTemp = (value as List<ChocolateModel>)
.where((element) => (element.chocolateColor == "Brown"))
.toList();
print("Count is ");
return chocolateTemp;

});
});
});
}

对于 ListView ,我使用的是 futureBuilder。

最佳答案

我认为如果您使用StreamBuilder 就会解决问题。当用户删除或添加新评论时,它会向所有用户显示。StreamBuilder 就是为此而生的,成为 Stream 的观察者。

这是我的代码:

Widget getListComment() {
return StreamBuilder<QuerySnapshot>(
stream: Firestore.instance
.collection('comments')
.where('post', isEqualTo: postRef)
.orderBy('createdAt', descending: true)
.snapshots(),

builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) return new Text('Error: ${snapshot.error}');
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Column(
children: <Widget>[
CircularProgressIndicator(),
],
);

default:
return new ListView(
children:
snapshot.data.documents.map((DocumentSnapshot document) {
return CommentItem(
key: Key(document.documentID),
comment: Comment.fromDoc(document),
myUser: widget.myUser,
);
}).toList(),
);
}
},
);
}

我收到来自 Firebase 的评论并在 ListView 中显示,我认为这就像你的巧克力。

关于dart - 使用 flutter 的多用户应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55542526/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com