原由:最近想明白,app是怎麼啟動flutter端的第一個路由?
相關類: materialApp、widgetsApp, navigator類。
一般情況下:我們在main() 方法直接返回 materialApp. 其中我們會填充 initialRoute, home, onGenearatorRoute,onUnkownRoute 這些屬性值。
第一步,materialApp buid() 方法
第二步, widgetsApp 的build方法 其中會建立Navigator物件
上面畫紅框,表示是否 原生有沒有修改 initialRoute的值
第三步,navigator 是如何push 第一個路由,分析他的initState方法
其中紅框裡面的2個_routeNamed()用來生成Route物件
第4步,分析怎麼生成route物件
其中有一個widget.onGenerateRoute() 呼叫的是 widgets 中的_onGenerateRoute()方法
裡面的紅框,最終呼叫我們配置materialApp 的屬性 onGenerateor 函式生成路由。
第一個_routeNamed() 方法,去找對應initialRoute的路由,如果沒有找到,
第二個_routeNamed() 用預設的 '/'路由,去找home屬性的路由。
記住: 路由尋找的步驟: initialRoute, home , onGenerateRoute,onUnkownRoute