如何在使用 GetX 时更新 FutureBuilder 中的未来以获取新数据

时间:2021-03-07 21:12:30

标签: flutter dart flutter-futurebuilder getx flutter-getx

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

0 个答案:

没有答案