0

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

2 回答 2

0

使用 getx worker Ever:如果数据发生变化,您可以更新视图

ever(index, (value) {

// 在此处调用您的函数 // 任何时候索引更改都会调用此处的任何代码 });

于 2021-08-30T16:12:10.263 回答
0

databaseController一个方法调用update(),因此您可以databaseController.update()在需要更新数据时调用。

于 2022-02-10T15:44:44.287 回答