[英]Go_Router, How to get result in previous page
在我的项目中,我正在设置 go_router 导航,它非常适合导航,但我在下面提到的两种情况下发现了两个问题。
我在整个应用程序中创建了一个通用的 function 路由,我在其中定义了所有推送、弹出、删除方法。 现在我需要设置一个通用方法,我可以将一些数据传递到其他屏幕,并且还需要在调用第二个屏幕弹出窗口时在 previos 页面中获取结果。
static go(
{required BuildContext context,
required Mode mode,
required String moveTo,
var param}) async {
try {
switch (mode) {
case Mode.PUSH:
context.push(RouteName.root + moveTo);
break;
case Mode.REPLACE:
context.pushReplacement(RouteName.root + moveTo);
break;
case Mode.REMOVE:
context.go(RouteName.root);
context.pushReplacement(RouteName.root + moveTo);
break;
case Mode.POP:
context.pop();
break;
}
} catch (e) {
print(e);
}
}
在 go_router 中,如果我将屏幕 B 弹出到屏幕 A,我无法找到获取当前页面信息的方法。我需要跟踪用户活动,因此在这种情况下,我需要在用户 go 或返回时获取路由信息任何屏幕。 如果 go_router 有任何方法,请指导我。
据我所知,目前没有办法做到这一点。 但是有人制作了一个 fork repo 并实现了它,你可以使用它。
它在 pub.dev 上,名称为go_router_flow 。 它与具有此 pop with value 功能的原始 go_router 完全一样。
这是一些示例代码:
final bool? result = await context.push<bool>('/page2');
WidgetsBinding.instance.addPostFrameCallback((_) {
if(result){
print('Page returned $result');
}
});
你可以在这里阅读讨论
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.