在 flutter 中用参数替换的最佳方法是什么?
What is the best way to push replace with arguments in flutter?
我试图在这里找到适合这种情况的最佳路由解决方案。我有如下工作流程屏幕。
Items Screen(1) ===> Item Details Screen(2) ====> Edit Items Screen(3)
在“编辑项目”屏幕上,当我编辑内容并保存时,它应该将用户带回“项目详细信息”屏幕,其中包含一些作为路由参数传递的对象和变量。
我用过
pushReplacementNamed("/details", arguments: ItemDetailsArguments(item: item, variables: variables));
在编辑项目屏幕上单击按钮。
这工作正常,直到我注意到当我点击应用程序栏(项目详细信息屏幕 (2))上的后退按钮时,它让我再次回到编辑项目屏幕 (3),而不是物品画面(1).
是否有更好的方法在单击按钮时将数据从屏幕 3 传递到屏幕 2,然后在从屏幕 2 按下后退按钮时将用户一路带回屏幕 1?
您可以将 pushNamedAndRemoveUntil
与谓词一起使用,而不是 pushReplacementNamed
,以从堆栈中删除不需要的路由。
阅读更多关于 pushNamedAndRemoveUntil
pushNamedAndRemoveUntil(
"/details",
ModalRoute.withName("/items"), // screen one - route predicate
arguments: ItemDetailsArguments(item: item, variables: variables),
);
路由谓词将让您决定需要从堆栈中删除什么。
在这种情况下,单击按钮后,推送到 "details screen" 并删除堆栈中的所有其他路由,直到主屏幕。希望对您有所帮助!
我试图在这里找到适合这种情况的最佳路由解决方案。我有如下工作流程屏幕。
Items Screen(1) ===> Item Details Screen(2) ====> Edit Items Screen(3)
在“编辑项目”屏幕上,当我编辑内容并保存时,它应该将用户带回“项目详细信息”屏幕,其中包含一些作为路由参数传递的对象和变量。
我用过
pushReplacementNamed("/details", arguments: ItemDetailsArguments(item: item, variables: variables));
在编辑项目屏幕上单击按钮。
这工作正常,直到我注意到当我点击应用程序栏(项目详细信息屏幕 (2))上的后退按钮时,它让我再次回到编辑项目屏幕 (3),而不是物品画面(1).
是否有更好的方法在单击按钮时将数据从屏幕 3 传递到屏幕 2,然后在从屏幕 2 按下后退按钮时将用户一路带回屏幕 1?
您可以将 pushNamedAndRemoveUntil
与谓词一起使用,而不是 pushReplacementNamed
,以从堆栈中删除不需要的路由。
阅读更多关于 pushNamedAndRemoveUntil
pushNamedAndRemoveUntil(
"/details",
ModalRoute.withName("/items"), // screen one - route predicate
arguments: ItemDetailsArguments(item: item, variables: variables),
);
路由谓词将让您决定需要从堆栈中删除什么。
在这种情况下,单击按钮后,推送到 "details screen" 并删除堆栈中的所有其他路由,直到主屏幕。希望对您有所帮助!