Flutter app启动flutter端源码分析

571 阅读1分钟

原由:最近想明白,app是怎么启动flutter端的第一个路由?

相关类: materialApp、widgetsApp, navigator类。

一般情况下:我们在main() 方法直接返回 materialApp. 其中我们会填充 initialRoute, home, onGenearatorRoute,onUnkownRoute 这些属性值。

第一步,materialApp buid() 方法

image.png 第二步, widgetsApp 的build方法 其中会创建Navigator对象

image.png 上面画红框,表示是否 原生有没有修改 initialRoute的值

第三步,navigator 是如何push 第一个路由,分析他的initState方法

image.png
其中红框里面的2个_routeNamed()用来生成Route对象
第4步,分析怎么生成route对象

image.png 其中有一个widget.onGenerateRoute() 调用的是 widgets 中的_onGenerateRoute()方法

image.png
里面的红框,最终调用我们配置materialApp 的属性 onGenerateor 函数生成路由。
第一个_routeNamed() 方法,去找对应initialRoute的路由,如果没有找到, 第二个_routeNamed() 用默认的 '/'路由,去找home属性的路由。

记住: 路由寻找的步骤: initialRoute, home , onGenerateRoute,onUnkownRoute