android - 在颤动中用参数推动替换的最佳方法是什么?
问题描述
我试图在这里找到适合这种情况的最佳路由解决方案。我有如下工作流程的屏幕。
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?
解决方案
pushReplacementNamed
您可以使用谓词代替 apushNamedAndRemoveUntil
来从堆栈中删除不需要的路由。
阅读更多关于pushNamedAndRemoveUntil
pushNamedAndRemoveUntil(
"/details",
ModalRoute.withName("/items"), // screen one - route predicate
arguments: ItemDetailsArguments(item: item, variables: variables),
);
路由谓词将让您决定需要从堆栈中删除什么。
在这种情况下,单击按钮后,推送到“详细信息屏幕”并删除堆栈中的所有其他路由,直到主屏幕。希望能帮助到你!
推荐阅读
- android - Android Espresso DrawerActions.open() 不起作用
- c++ - 将 unsinged int(使用 .size())分配给一维浮点向量
- python - python列表理解的语法错误
- python - django 博客中的评论部分不会显示在每个单独的帖子下?
- javascript - 当我调用 onChange 在反应中收集输入字段数据时,需要很长时间才能输入样式化的 M-UI TextFields
- javascript - 从一个目录导入多个组件
- javascript - 清空 redux 存储,useSelector 不返回任何内容
- ubuntu - 当其他列值在 Ubuntu 中的引号内有逗号时,将一个列值复制到 CSV 中的另一个
- scala - Scala REPL 中的浮点文字错误
- python - PYMC3 'FreeRV' 对象不支持项目分配错误