路由(Route)在移動開發中通常指頁面(Page),這跟 Web 開發中單頁應用的 Route 概念意義是相同的,Route 在 Android中 通常指一個 Activity,在 iOS 中指一個 ViewController。
所謂路由管理,就是管理頁面之間如何跳轉,通常也可被稱為導航管理。
Flutter 中的路由管理和原生開發類似,無論是 Android 還是 iOS,導航管理都會維護一個路由棧,路由入棧(push)操作對應打開一個新頁面,路由出棧(pop)操作對應頁面關閉操作,而路由管理主要是指如何來管理路由棧。
介紹一下MaterialPageRoute 構造函數的各個參數的意義:
~~~plain
MaterialPageRoute({
WidgetBuilder builder,
RouteSettings settings,
bool maintainState = true,
bool fullscreenDialog = false,
})
~~~
* **builder** 是一個WidgetBuilder類型的回調函數,它的作用是構建路由頁面的具體內容,返回值是一個widget。我們通常要實現此回調,返回新路由的實例。
* **settings** 包含路由的配置信息,如路由名稱、是否初始路由(首頁)。
* **maintainState**:默認情況下,當入棧一個新路由時,原來的路由仍然會被保存在內存中,如果想在路由沒用的時候釋放其所占用的所有資源,可以設置maintainState為 false。
* **fullscreenDialog** 表示新的路由頁面是否是一個全屏的模態對話框,在 iOS 中,如果fullscreenDialog為true,新頁面將會從屏幕底部滑入(而不是水平方向)。