在颤抖中用参数推动替换的最佳方法是什么?

时间:2020-02-21 17:49:25

标签: android flutter routing

我试图在这里找到针对这种情况的最佳路由解决方案。我的工作流程如下所示。

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 个答案:

答案 0 :(得分:1)

您可以将pushReplacementNamed与谓词一起使用,而不是pushNamedAndRemoveUntil来从堆栈中删除不需要的路由。

详细了解pushNamedAndRemoveUntil

pushNamedAndRemoveUntil(
   "/details", 
   ModalRoute.withName("/items"), // screen one - route predicate
   arguments: ItemDetailsArguments(item: item, variables: variables),
);

Route谓词将使您决定需要从堆栈中删除的内容。

在这种情况下,单击按钮后,推至“详细信息屏幕”,并从主屏幕删除堆栈中所有其他路由。希望对您有帮助!