Flutter导航器未按预期工作。

13 浏览
0 Comments

Flutter导航器未按预期工作。

我希望用户在达到某个页面后能够返回到“/”命名的路由。条件是当达到该页面时,用户应该只能通过Navigator.pop(context)返回到“/”。

例如,假设我配置了以下路由:

用户在“/”处 > 点击按钮并推送到“/abc” > 点击按钮并推送到“/xyz” > 点击按钮并推送到“/mnq”

现在,我希望当用户在/mnq处并执行Navigator.pop(context)时,用户应该被发送回“/”,而不是其他任何地方。

当我在/xyz处时,我尝试通过Navigator.pushNamedAndRemoveUntil(context, '/mnq', ModalRoute.withName('/'), arguments:....)来实现,但是它不起作用,因为当达到/mnq后执行Navigator.pop时,我看到一个黑屏。

有没有办法实现这个。请注意,我需要从/xyz发送参数到/mnq。

0
0 Comments

问题原因:pushNamedAndRemoveUntil方法会移除所有之前的页面,当使用返回/弹出操作时,由于没有之前的页面,所以会显示黑屏。

解决方法:可以通过pushReplacementNamed方法传递参数,或者将数据存储在本地。具体可以参考以下链接:Flutter - Pass values between routes using pushReplacementNamed 或者使用shared_preferences插件进行本地数据存储。https://pub.dev/packages/shared_preferences

0
0 Comments

问题:Flutter Navigator没有按预期工作的原因以及解决方法

原因:可能是由于使用了错误的Navigator方法,导致导航不起作用。

解决方法:尝试使用pushReplacementNamed()方法来解决此问题。具体步骤如下:

1. 使用pushNamed('/abc')将路由推入导航堆栈。

2. 使用pushReplacementNamed('/xyz')将新路由推入导航堆栈并替换当前路由。

3. 使用pushReplacementNamed('/mnq')将新路由推入导航堆栈并替换当前路由。

为了更深入了解此问题的解决方案,可以阅读此文章

通过使用pushReplacementNamed()方法,可以解决Flutter Navigator不按预期工作的问题。

0
0 Comments

问题:Flutter导航器(Navigator)无法按预期工作的原因和解决方法

在Flutter开发中,使用导航器(Navigator)来管理页面之间的跳转是非常常见的。然而,有时候我们可能会遇到导航器无法按照预期工作的情况。下面是一个关于Flutter导航器不按预期工作的问题以及解决方法的整理。

问题1:按下一个按钮后,用户应该返回到'/'页面,但是导航器无法正常工作。

解决方法:使用Navigator.popUntil(context, ModalRoute.withName('/'));来代替Navigator.pop(context);

问题2:如果用户点击返回按钮,导航器无法按预期工作。

解决方法:使用WillPopScope来监听返回按钮的点击事件,并在事件发生时执行相应的操作。具体代码如下:

WillPopScope(

onWillPop: () async {

Navigator.popUntil(context, ModalRoute.withName('/'));

return false;

},

child: Scaffold(......),

)

通过以上的解决方法,我们可以解决Flutter导航器不按预期工作的问题。在问题1中,我们使用了Navigator.popUntil来代替Navigator.pop来实现按下按钮后返回到指定页面的功能。在问题2中,我们使用了WillPopScope和onWillPop来监听返回按钮的点击事件,并在事件发生时执行相应的操作,即返回到指定页面。

希望以上的内容对于遇到Flutter导航器不按预期工作问题的开发者有所帮助。

0