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