MaterialApp 代表使用紙墨設(shè)計(Material Design)風格的應(yīng)用。里面包含了紙墨設(shè)計風格應(yīng)用所需要的基本控件。
MaterialApp 主要屬性如下:
- title : 在任務(wù)管理窗口中所顯示的應(yīng)用名字
- theme : 應(yīng)用各種 UI 所使用的主題顏色
- color : 應(yīng)用的主要顏色值(primary color),也就是安卓任務(wù)管理窗口中所顯示的應(yīng)用顏色
- home : 應(yīng)用默認所顯示的界面 Widget
- routes : 應(yīng)用的頂級導航表格,這個是多頁面應(yīng)用用來控制頁面跳轉(zhuǎn)的,類似于網(wǎng)頁的網(wǎng)址
- initialRoute :第一個顯示的路由名字,默認值為 Window.defaultRouteName
- onGenerateRoute : 生成路由的回調(diào)函數(shù),當導航的命名路由的時候,會使用這個來生成界面
- onLocaleChanged : 當系統(tǒng)修改語言的時候,會觸發(fā)?這個回調(diào)
- navigatorObservers : 應(yīng)用 Navigator 的監(jiān)聽器
- debugShowMaterialGrid : 是否顯示 紙墨設(shè)計 基礎(chǔ)布局網(wǎng)格,用來調(diào)試 UI 的工具
- showPerformanceOverlay : 顯示性能標簽,https://flutter.io/debugging/#performanceoverlay
- checkerboardRasterCacheImages 、showSemanticsDebugger、debugShowCheckedModeBanner 各種調(diào)試開關(guān)
下面將介紹重要的幾個屬性。
title
這個和啟動圖標名字是不一樣的,和當前 Activity 的名字也是不一樣的。 這個 Title 是用來定義任務(wù)管理窗口界面所看到應(yīng)用名字的。在原生 Android 系統(tǒng)中點擊圓圈 Home 按鈕右邊的方塊按鈕就會打開多任務(wù)切換窗口。
theme
定義應(yīng)用所使用的主題顏色,在紙墨設(shè)計中定義了 primaryColor、accentColor、hintColor 等顏色值??梢酝ㄟ^這個來指定一個 ThemeData 定義應(yīng)用中每個控件的顏色。
home
這個是一個 Widget 對象,用來定義當前應(yīng)用打開的時候,所顯示的界面。
color
定義系統(tǒng)中該應(yīng)用的主要顏色
routes
定義應(yīng)用中頁面跳轉(zhuǎn)規(guī)則。 該對象是一個 Map<String, WidgetBuilder>。
當使用 Navigator.pushNamed 來路由的時候,會在 routes 查找路由名字,然后使用 對應(yīng)的 WidgetBuilder 來構(gòu)造一個帶有頁面切換動畫的 MaterialPageRoute。如果應(yīng)用只有一個界面,則不用設(shè)置這個屬性,使用 home 設(shè)置這個界面即可。
如果 home 不為 null,當 routes 中包含 Navigator.defaultRouteName('/') 的時候會出錯,兩個都是 home 沖突了。
如果所查找的路由在 routes 中不存在,則會通過 onGenerateRoute 來查找。
initialRoute
指定默認顯示的路由名字,默認值為 Window.defaultRouteName
onGenerateRoute
路由回調(diào)函數(shù)