我有一个应用程序,我第一次检查和抓取一些数据,一旦第一页加载。下面是它的代码。[请注意,我正在开发的应用程序在网络上]:
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]!,
););
1条答案
按热度按时间2ul0zpep1#
您不应直接在
future
属性中设置Future.wait([restaurantData, foodData, drinkData]),
,而应在变量only open中初始化它,然后使用它:在
FutureBuilder
中,将其用作: