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