firebase Flutter导航回页面并刷新页面

ruarlubt  于 2023-02-25  发布在  Flutter
关注(0)|答案(1)|浏览(167)

我有一个应用程序,我第一次检查和抓取一些数据,一旦第一页加载。下面是它的代码。[请注意,我正在开发的应用程序在网络上]:

return FutureBuilder(
  future: Future.wait([restaurantData, foodData, drinkData]),
  builder: (context, AsyncSnapshot<List<dynamic>> snapshot) {
    //var state = Provider.of<QuizzState>(context);

    if (!snapshot.hasData || snapshot.hasError) {
      return Loader();
    } else if (snapshot.data![0]?.name == '') {
      return NoRestaurantPage();
    } else {
      return MainRestaurantPage(
        data1: snapshot.data![0]!,
        data2: snapshot.data![1]!,
       
      );
    }
  },
);

现在,如您所见,它返回MainRestaurantPage,这是一个普通页面。当我从MainRestaurantPage打开一个新页面时,问题出现了。当我点击后退箭头返回MainRestaurantPage时,它刷新了页面,因为它再次返回到第一个页面,并使用未来的构建器再次获取数据。我如何才能使它在新页面上点击后退箭头时,我返回到MainRestaurantPage,但它没有转到第一页并刷新所有数据。
多谢你调查此事。如需更多资料,请向本局查询
更新:
如果我在将来的生成器中返回页面之前在容器中添加了边距,它将返回顶部带有边距的页面,我如何才能使它返回一个新页面,而不是内部带有widgeed(MainRestaurantPage)的当前页面

return Container(
          margin: EdgeInsets.only(top: 100),
          child: MainRestaurantPage(
            data1: snapshot.data![0]!,
            data2: snapshot.data![1]!,

  ););
2ul0zpep

2ul0zpep1#

您不应直接在future属性中设置Future.wait([restaurantData, foodData, drinkData]),,而应在变量only open中初始化它,然后使用它:

// in the State object of that widget
late Future future;

@override   
initState() {
 super.initState();
 future = Future.wait([restaurantData, foodData, drinkData]),
}

FutureBuilder中,将其用作:

FutureBuilder(
 future: future, // apply it here
 // ....
)

相关问题