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

MaterialApp内第一页的应用程序中,我们可以为应用程序定义路由,这与onGenerateRoute可以定义的路由相同。

两者都用于NamedRoute。

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

最佳答案

这两个属性未做任何详细说明,但它们执行相同的操作,但正如@Alireza指出的那样,首先检查了routes

另外,使用onGenerateRoute可让您在推送新路线(页面)之前添加自定义业务逻辑的单一位置。例如,如果要进行一些初始化。

routes property:



onGenerateRoute property:



重要提示:
您真正要注意的是onGenerateRoute属性中的known bug

问题是,如果您使用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:属性。

10-06 10:23