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:
属性。