MaterialPageRoute 淺認識


 

https://book.flutterchina.club/chapter2/flutter_router.html

 

MaterialPageRoute繼承自PageRoute類,PageRoute類是一個抽象類,表示占有整個屏幕空間的一個模態路由頁面,它還定義了路由構建及切換時過渡動畫的相關接口及屬性。MaterialPageRoute 是Material組件庫提供的組件,它可以針對不同平台,實現與平台頁面切換動畫風格一致的路由切換動畫:

當打開頁面時,新的頁面會從屏幕右側邊緣一致滑動到屏幕左邊,直到新頁面全部顯示到屏幕上,而上一個頁面則會從當前屏幕滑動到屏幕左側而消失;當關閉頁面時,正好相反,當前頁面會從屏幕右側滑出,同時上一個頁面會從屏幕左側滑入。 

 

 

 

下面我們介紹一下MaterialPageRoute 構造函數的各個參數的意義:

  MaterialPageRoute({ WidgetBuilder builder, RouteSettings settings, bool maintainState = true, bool fullscreenDialog = false, }) 
  • builder 是一個WidgetBuilder類型的回調函數,它的作用是構建路由頁面的具體內容,返回值是一個widget。我們通常要實現此回調,返回新路由的實例。
  • settings 包含路由的配置信息,如路由名稱、是否初始路由(首頁)。
  • maintainState:默認情況下,當入棧一個新路由時,原來的路由仍然會被保存在內存中,如果想在路由沒用的時候釋放其所占用的所有資源,可以設置maintainState為false。
  • fullscreenDialog表示新的路由頁面是否是一個全屏的模態對話框,在iOS中,如果fullscreenDialogtrue,新頁面將會從屏幕底部滑入(而不是水平方向)。

 

 

 

Navigator

Navigator是一個路由管理的組件,它提供了打開和退出路由頁方法。Navigator通過一個棧來管理活動路由集合。通常當前屏幕顯示的頁面就是棧頂的路由。Navigator提供了一系列方法來管理路由棧,在此我們只介紹其最常用的兩個方法:

Future push(BuildContext context, Route route)

將給定的路由入棧(即打開新的頁面),返回值是一個Future對象,用以接收新路由出棧(即關閉)時的返回數據。

bool pop(BuildContext context, [ result ])

將棧頂路由出棧,result為頁面關閉時返回給上一個頁面的數據。

Navigator 還有很多其它方法,如Navigator.replaceNavigator.popUntil等,詳情請參考API文檔或SDK源碼注釋,在此不再贅述。下面我們還需要介紹一下路由相關的另一個概念“命名路由”。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM