我有一个有状态的Page A,其中包含一个小部件,该小部件存在于单独的有状态类中。
该小部件在其initState方法中从sharedPreferences中获取一个数字并显示出来,当我单击该小部件时,它会路由到Page B,Page B包含一个更改sharedPreferences中数字的函数。
当我返回时,我看不到更改,但是当我重新打开应用程序或切换到其他选项卡并返回时,我会看到。
答案 0 :(得分:1)
在A页中,当您转到B页时,
Navigator.pushNamed(context, "/pageB").then((value) {
if (value == true) {
setState(() {
// refresh page 1 here, you may want to reload your SharedPreferences here according to your needs
});
}
});
在B页中,当您想返回到A页时,请使用
Navigator.pop(context, true);
编辑:如果您没有命名路线,则可能需要在第一种情况下使用关注。
Navigator.push(context, MaterialPageRoute(builder: (context) => PageB())).then((value) {
if (value == true) {
setState(() {
// refresh page 1 here, you may want to reload your SharedPreferences here according to your needs
});
}
});
答案 1 :(得分:0)
如果您要从pageA移到pageB:
在页面中的小部件按钮上单击,您需要调用以下代码:
_navigateAndDisplayData(
BuildContext context) async {
final returnVal = await Navigator.push(
context,
MaterialPageRoute(builder: (context) => pageB()),
);
setState(() {
// returnVal has true or false.
if (returnVal){
// Put your code here
}
});
}
如果您总是希望从pageB中获取任何值来进行刷新。然后只需删除if语句。
在另一面PageB上,您想在刚刚使用的pageA上发送数据
Navigator.pop(context, true);