【发布时间】:2021-03-16 13:09:24
【问题描述】:
假设我有第 1 页和第 2 页,它们都是使用路由器委托和路由信息解析器加载的。如果您使用后退按钮返回堆栈或单击指向同一路线的链接,您会得到旧页面,就它而言这很好,但问题是几乎总是您真正想要的是重新加载任何更改的数据。
如何将导航与页面本身挂钩,以便当它成为活动页面时,它可以开始从服务器重新加载数据?
【问题讨论】:
标签: flutter flutter-navigation
假设我有第 1 页和第 2 页,它们都是使用路由器委托和路由信息解析器加载的。如果您使用后退按钮返回堆栈或单击指向同一路线的链接,您会得到旧页面,就它而言这很好,但问题是几乎总是您真正想要的是重新加载任何更改的数据。
如何将导航与页面本身挂钩,以便当它成为活动页面时,它可以开始从服务器重新加载数据?
【问题讨论】:
标签: flutter flutter-navigation
我解决这个问题的方法是为路由定义一个回调。 例如:
onTap: () async {
var response = await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Page2()));
if (response == "true") {
print("hello");
}
getData();
},
我们正在做的是将新路由添加到堆栈并等待响应。一旦你有答案(因为它会弹出)继续执行并调用 void getData ()
事实上你甚至可以返回值,例如:
onPressed: () {
Navigator.pop(context, 'response');
},
【讨论】: