gpt4 book ai didi

flutter - Flutter 中 onGenerateRoute 和路由的区别

转载 作者:行者123 更新时间:2023-12-01 13:11:12 26 4
gpt4 key购买 nike

onGenerateRoute的好处或用例是什么?和 Flutter 中的路由。

在我的应用程序第一页里面 MaterialApp我们可以为我们的应用程序定义路由,就像我们可以用 onGenerateRoute 定义的一样。 .

两者都用于 NamedRoute。

我有疑问,在哪种情况下需要使用路由,在哪种情况下需要使用 onGenerateRoute ?

最佳答案

注意(见答案下面的评论):

There is no bug, just bad usage by the issue reporter. It is caused because he didn't pass the settings object along to the new MaterialPageRoute returned by the onGenerateRoute method (see the issue's final comments). [...]



原始答案提到“错误”:
没有深入研究任何细节,这两个属性做同样的事情,但正如@Alireza 指出的 routes首先检查。
另外,使用 onGenerateRoute在推送新路由(页面)之前,您可以在一个地方添加自定义业务逻辑。例如,如果要进行一些初始化。
routes property:

When a named route is pushed with Navigator.pushNamed, the route nameis looked up in this map. If the name is present, the associatedWidgetBuilder is used to construct a MaterialPageRoute that performsan appropriate transition, including Hero animations, to the newroute.


onGenerateRoute property:

The route generator callback used when the app is navigated to a namedroute....This is used if routes does not contain the requested route.


重要提示:
您真正想知道的是 known bugonGenerateRoute属性(property)。
问题是如果你使用 onGenerateRoute要创建命名路由,您将无法从页面中的 RouteSettings 对象获取该路由的名称。 (虽然附加到设置对象的参数很好)
换句话说:
Widget build(BuildContext context) {
ModalRoute.of(context).settings.name == null; //bug
ModalRoute.of(context).settings.arguments != null; //ok
...
如果您想知道当前路线的名称,这可能会影响您。
例如,如果你想弹出一些屏幕:
navigator.popUntil(ModalRoute.withName('/login'));
因此,在此问题解决之前,我建议使用 routes:属性(property)。

关于flutter - Flutter 中 onGenerateRoute 和路由的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59822279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com