在颤动中用参数推动替换的最佳方法是啥?
Posted
技术标签:
【中文标题】在颤动中用参数推动替换的最佳方法是啥?【英文标题】:What is the best way to push replace with arguments in flutter?在颤动中用参数推动替换的最佳方法是什么? 【发布时间】:2020-02-21 17:49:25 【问题描述】:我正在尝试在这里找到适合这种情况的最佳路由解决方案。我有如下工作流程的屏幕。
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?
【问题讨论】:
【参考方案1】:您可以使用带有谓词的pushNamedAndRemoveUntil
而不是pushReplacementNamed
,以从堆栈中删除不需要的路由。
阅读更多关于pushNamedAndRemoveUntil
pushNamedAndRemoveUntil(
"/details",
ModalRoute.withName("/items"), // screen one - route predicate
arguments: ItemDetailsArguments(item: item, variables: variables),
);
路由谓词将让您决定需要从堆栈中删除哪些内容。
在这种情况下,单击按钮后,推送到“详细信息屏幕”并删除堆栈中的所有其他路由,直到主屏幕。希望对您有所帮助!
【讨论】:
以上是关于在颤动中用参数推动替换的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在数据库 django 中用特殊字符定义特定数字的最佳方法是啥
agora 和 mux 和有啥不一样?在颤动中流式传输实时视频的最佳方式是啥?