我正在使用 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;
}