如何解决Flutter / Dart-将上下文转发以将Navigator.pop返回两个上下文?
我需要能够弹出两页。当我使用命名路由动态创建页面时,这是不切实际的。那么有没有办法将上下文从原始页面传递到目标页面?
在原始页面上;
Navigator.push(
context,MaterialPageRoute(builder: (originalcontext) => SecondRoute()),);
然后在SecondRoute的页面上,我有
Navigator.push(
context,MaterialPageRoute(builder: (originalcontext) => ThirdRoute()),);
然后在ThirdRoute页面上,我要跳回到原始页面-绕过SecondRoute页面。
Navigator.pop(originalcontext);
解决方法
您可以这样定义SecondRoute
:
class SecondRoute extends StatelessWidget
{
final BuildContext originalContext;
//other properties
SecondRoute({this.originalContext}); //Initialize other properties
//Now use the 'originalContext'
}
类似地,您可以定义ThirdRoute
。
现在通过originalContext
Navigator.push(
context,MaterialPageRoute(builder: (originalcontext) => SecondRoute(originalContext:originalcontext)),);
编辑:原始问题已被编辑。
第一种方法: 试试这个:
Navigator.of(context).popUntil((route) => route.isFirst)
将上面的代码放在您的
上ThirdRoute()
第二种方法:
把它放在你的SecondRoute()
Navigator.pushReplacement(context,MaterialPageRoute(builder: (BuildContext context) => ThirdRoute()));
代替普通的Navigator.push(...);
然后在您的ThirdRoute()
上添加
Navigator.of(context).pop();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。