【发布时间】:2020-02-16 21:15:08
【问题描述】:
我希望能够导航到我的应用程序中的上一页,但我不希望该页面保持之前的状态。我该怎么做呢?
【问题讨论】:
标签: flutter dart navigation
我希望能够导航到我的应用程序中的上一页,但我不希望该页面保持之前的状态。我该怎么做呢?
【问题讨论】:
标签: flutter dart navigation
返回上一页后可以在Navigator中使用then调用setState:
Navigator.push(context,MaterialPageRoute(builder: (context) =>NextPage())).then((_) {
setState(() {});
});
【讨论】:
您使用哪种状态管理?
如果是经典的 stful stless,您可能需要回调。
假设您在下一页:
onPressed: () {
// return to the parent ancestor the [value]
Navigator.pop(context, value);
},
您返回带有一些“价值”的上一页; 您需要修改让您处理推送到下一页的 Navigator;
onPressed: () async {
var value = await Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return SecondPage();
},
),
);
// get the callback
// handle error
if (value != null) {
try {
setState(() {
// update your current state by the value you get from the second page
myUserName = value;
});
} catch (e) {
print('Errors');
}
}
},
您可以通过多种方式实现这一目标。如果您正在使用其他状态管理,请告诉我。
【讨论】:
你可以管理你知道的价值吗? 想象一下这个值是'bool':
onPressed: () async {
var value = await Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return SecondPage();
},
),
);
// get the callback
// handle error
if (value) {
try {
// reload your api call ?
} catch (e) {
print('Errors');
}
}
},
您还可以通过从顶部手动滚动来将数据包装在刷新指示器中以刷新数据。在这种情况下,您可以随时刷新您的 api 调用...
这样想,您的页面数据需要以某种方式重建以刷新数据。通过只是导航回来它不会。屏幕需要来自某个地方的命令。
【讨论】: