我还没有创建任何在屏幕之间导航的路线。我使用 Navigator 进行导航:
Navigator.push(context, MaterialPageRoute(builder: (context) => HomePage()));
Run Code Online (Sandbox Code Playgroud)
我所做的是导航到从主页到成功屏幕的四个屏幕:
主页 => CreatePostScreen => CreateImagePost => SuccessScreen
当我到达成功屏幕时,我想弹出两个屏幕并返回到 CreatePostScreen。我不想写 Navigator.pop(context) 两次。
我尝试使用它,但它会出现黑屏:
Navigator.popUntil(context, (route) => route is CreatePostScreen);
Run Code Online (Sandbox Code Playgroud)
但这不起作用。我想了解 flutter 如何处理小部件导航而不是通过路线名称以及解决方案。
我知道导航器类如何处理路线名称,但我想知道如果我推送小部件及其工作如何解决它。
Gab*_*yer 11
你想要做什么:
Navigator.popUntil(context, (route) => route is CreatePostScreen);
Run Code Online (Sandbox Code Playgroud)
不起作用,因为路线是路线类型,而不是小部件。这会导致所有路由被弹出,因为没有路由满足您的谓词。
您应该做的是使用设置推送您的路线,例如:
Navigator.push(context, MaterialPageRoute(builder: (context) => HomePage(), settings: RouteSettings(name: "/home")));
Run Code Online (Sandbox Code Playgroud)
然后在你的谓词中使用它。例如:
Navigator.popUntil(context, (route) => route.settings.name == "/home");
Run Code Online (Sandbox Code Playgroud)
希望对你有帮助。您可以使用popUntil导航类的方法。
int count = 0;
Navigator.of(context).popUntil((_) => count++ >= 2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7940 次 |
| 最近记录: |