我想使用 navigator.pop 将值从第 2 页传递到第 1 页,并在initstate
中使用新值刷新或重新加载我的第一页或任何其他解决方法?
我能够在第一页中获取这些值,但无法在我想在 API n 中传递新数据initstate
中刷新或重新加载页面 n 得到响应...
有什么帮助吗?
我正在从这里重定向到列表页面...
getBrand(BuildContext context) async {
tempBrand = await Navigator.push(context,
MaterialPageRoute(builder: (context) => BrandList(widget.subCatID)));
selectedBrand = tempBrand.name;
selectedBrandID = tempBrand.id;
}
现在在这里,我将这些值传递到navigator.pop
在这里获取价值并传递回第一页。
Container(
padding: EdgeInsets.all(10),
child: ListView.separated(
separatorBuilder: (context, index) =>
Divider(color: Color(0xffcccccc)),
itemCount: prodBrands.length,
itemBuilder: (BuildContext context, int index) {
return GestureDetector(
child: InkWell(
onTap: () {
tempProdBrand = ProdBrandListModel.Message(
id: prodBrands[index].id,
name: prodBrands[index].name,
);
Navigator.pop(context, tempProdBrand);
},
child: Container(
child: Text(prodBrands[index].name),
padding: EdgeInsets.all(10.0),
),
),
);
}),
)
想在这里使用新值...
submitProduct() {
api
.newbiz(
selectedBrandID,
)
.then((response) {
setState(() {
productID = response.message;
});
});
setState(() {});
}
只是想从 initstate 刷新我的页面,或者当我使用在 pop 函数中传递的新值弹出到第一页时的任何其他方式刷新我的页面。
1 页导航到第 2 页
通常你使用Navigator.push(( 例如:
// Page1
Navigator.push(context, MaterialPageRoute(builder: (context) => Page2()));
当您在 Page2 中时,您会做一些工作,例如在共享首选项中保存一些数据并返回 Page1 并刷新 Page1 以从共享首选项中获取新数据,您可以做的是使用
//Page2
Navigator.pop(context);
这不足以刷新您的页面1所以你需要在 Page1 导航器中附加一个 .then 作为回调,当你从 page2 弹出时,它将被调用,并且 .then 应该有一个设置状态来触发重建,只需在设置状态内调用一个东西来导致重建 喜欢这个:
//Page1
Navigator.push(context, MaterialPageRoute(builder: (context) => Page2())).then((value) {
setState(() {
// refresh state of Page1
});
});