当我使用Get.bottomSheet时,我无法管理状态,即使我用GetBuilder() Package 它,并使用update()函数。
这是密码
- 这是在底表中显示注解的函数。**
commentFunction(context, id, comments) {
Get.bottomSheet(CustomPageForComments(
postid: id,
sendCommentFunction: () {
sendComment(id, commentController.text);
},
controllerForCommentField: commentController,
comments: comments));}
- CustomPageForComments()是一个简单的页面,它使用流来从数据库获取注解。**
最后是发送注解函数
sendComment(String id, String message) {
commentController.clear();
DocumentReference setter =
FirebaseFirestore.instance.collection("Posts").doc(id);
setter.update({
"comments": FieldValue.arrayUnion([
{
"username": currentusername,
"message": message,
"time": DateTime.now(),
"id": formatDate(DateTime.now(),
[yyyy, ":", mm, ":", dd, ":", hh, ':', nn, ":", ss]),
}
])
});
update();}
我想在使用发送评论功能时刷新底部工作表,这样用户就可以看到他的评论而不需要重新打开底部工作表。
当你关闭最下面的表单并重新打开它时,它实际上会更新
我该怎么办?
我还想问,在注解中使用流构建器而不是未来构建器是真的吗?
谢谢
2条答案
按热度按时间5vf7fwbs1#
要更改底部工作表内的状态,可以使用StatefulBuilder
如果您希望注解真实的更新(可能会因读取而导致更高的成本),请使用Stream Builder,要仅提取数据一次,请使用FutureBuilder
pxq42qpu2#
在bottomSheet中使用update()可以正常工作。确保正确使用GetBuilder。你需要刷新内部小部件,而不是Get.bottomSheet函数。你的代码应该如下所示: