Flutter导航器未按预期工作

q43xntqr  于 2023-01-06  发布在  Flutter
关注(0)|答案(3)|浏览(129)

所以我希望用户在到达某个页面后能够返回到“/”命名的路径,条件是当到达该页面时,用户应该只被路由到Navigator.pop(上下文)上的“/”。
例如,假设我的路由配置为:

用户位于“/”〉单击按钮并将“名称”推入“/abc”〉单击按钮并将“名称”推入“/xyz”〉单击按钮并将“名称”推入“/mnq”

现在,我希望当用户位于/mnq并且执行Navigator.pop(context)时,用户应该被发送回“/”,而不是其他任何地方。
当我在/xyz时,我尝试执行Navigator.pushNamedAndRemoveUntil(context,'/mnq',ModalRoute.withName('/'),arguments:....),但它不起作用,因为当到达/mnq后执行Navigator.pop时,我看到黑屏。
是否有办法做到这一点。请注意,我需要将参数从/xyz发送到/mnq。

sdnqo3pr

sdnqo3pr1#

您可以尝试使用pushReplacementNamed()
'/'推送命名为'/abc'推送替换命名为'/xyz'推送替换命名为'/mnq '
有关详细信息,请阅读此article

smdncfj3

smdncfj32#

pushNamedAndRemoveUntil是删除之前所有页面。当您使用back/pop时,它将显示黑色,因为之前没有页面。您可以使用pushReplacementNamed Flutter - Pass values between routes using pushReplacementNamed传递参数或将数据存储在本地https://pub.dev/packages/shared_preferences

gopyfrb3

gopyfrb33#

第1次按下按钮时,用户应返回“/”
只需使用Navigator.popUntil(context, ModalRoute.withName('/'));
代替Navigator.pop(context);
第二步,如果用户选择后退按钮

WillPopScope(
      onWillPop: () async {
        Navigator.popUntil(context, ModalRoute.withName('/'));
        return false;
      },
 child: Scaffold(......),
)

相关问题