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

问题描述 投票:0回答:1

我正在尝试在此情况下找到最佳的路由解决方案。我的工作流程如下所示。

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?

android flutter routing
1个回答
1
投票

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

阅读有关pushNamedAndRemoveUntil的更多信息

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

Route predicate将让您决定需要从堆栈中删除的内容。

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

© www.soinside.com 2019 - 2024. All rights reserved.