我正在使用 GetX 和 FutureBuilder 从我的数据库中构建卡片列表。假设我在 DB 中有 10 种产品,然后显示 10 张卡。当我再添加一个产品时,主屏幕上的卡片没有更新,我必须导航进出页面才能显示第 11 个产品。
如何强制更新,即可能制作一个“刷新”按钮来加载最新数据。
PS:我不想使用 STREAM-BUILDER,因为我不想主动听所有的变化,但只在需要的时候。我也不能使用 SetState(),因为我正在使用 GetX,因此没有 StatefulWidget。
这是我的卡片类:
FutureBuilder(
future: databaseController.getData()
builder: (context, snapshot) {
return StaggeredGridView.countBuilder(
itemCount: snapshot.data.length,
crossAxisCount: 2,
itemBuilder: (BuildContext context, int index) =>
GetX<FindDeviceLocation>(builder: (controller) {
return CreateTheCard(
lindex: index,
location: snapshot.data[index]["location"],
summary: snapshot.data[index]["summary"],
description: snapshot.data[index]["description"],
category: snapshot.data[index]["category"],
imageURL: snapshot.data[index]["adImage"],
onTapFunction: () => Get.to(DetailPage(
post: snapshot.data[index],
)));
}),
这是我从数据库中获取数据的方法:
Future getData() async {
QuerySnapshot _firebaseDb = await FirebaseFirestore.instance
.collection("items")
.where("status", isEqualTo: true)
.orderBy("postTime", descending: true)
.get();
return _firebaseDb.docs;
}