dan*_*nte 35 navigation routes dart flutter gorouter
我正在尝试打开一个页面并使用 go_router 包获取返回的结果。在导航 1.0 中我使用这个:
final result = await Navigator.push(
context,
MaterialPageRoute(builder: (context) => const SecondRoute()),
);
// handle result
Run Code Online (Sandbox Code Playgroud)
但我似乎无法用 go_router 做到这一点。有什么解决办法或者解释吗?
Adi*_*ora 20
最新版本的 go_router 包现在支持此功能。要在从屏幕弹出时传递数据,您可以这样做:
context.pop('value');
Run Code Online (Sandbox Code Playgroud)
要取回该值,您的代码应如下所示:
String? val = await context.pushNamed('secondRoute');
Run Code Online (Sandbox Code Playgroud)
希望这有帮助,谢谢
您可以使用 来执行此操作GoRouter.of(context).addListener。
首先推送新页面,然后添加监听器
GoRouter.of(context).push("/page/${page!.id}/edit");
GoRouter.of(context).addListener(watchRouteChange);
Run Code Online (Sandbox Code Playgroud)
监听器函数看起来像这样
watchRouteChange() {
if (!GoRouter.of(context).location.contains("/edit")) { // Here you check for some changes in your route that indicate you are no longer on the page you have pushed before
// do something
GoRouter.of(context).removeListener(watchRouteChange); // remove listener
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32202 次 |
| 最近记录: |