Flutter app啟動flutter端原始碼分析

小小迷糊發表於2021-07-09

原由:最近想明白,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

相關文章