我试图在这里找到针对这种情况的最佳路由解决方案。我的工作流程如下所示。
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?
答案 0 :(得分:1)
您可以将pushReplacementNamed
与谓词一起使用,而不是pushNamedAndRemoveUntil
来从堆栈中删除不需要的路由。
pushNamedAndRemoveUntil(
"/details",
ModalRoute.withName("/items"), // screen one - route predicate
arguments: ItemDetailsArguments(item: item, variables: variables),
);
Route谓词将使您决定需要从堆栈中删除的内容。
在这种情况下,单击按钮后,推至“详细信息屏幕”,并从主屏幕删除堆栈中所有其他路由。希望对您有帮助!