Flutter隨記二:MaterialApp組件介紹

MaterialApp在上一篇文章講到它是App程序中最重要的組件,可以構(gòu)建出了app基本的輪廓、主題和色彩。下面我們來認(rèn)識下它吧。

有一個(gè)TextStyle類型的屬性_errorTextStyle 和ThemeMode枚舉。以及下列一些屬性

{

this.navigatorKey,? ?

this.scaffoldMessengerKey,

this.home,

Map<String, WidgetBuilder> this.routes = const <String, WidgetBuilder>{},

this.initialRoute,

this.onGenerateRoute,

this.onGenerateInitialRoutes,

this.onUnknownRoute,

List<NavigatorObserver> this.navigatorObservers = const <NavigatorObserver>[],

this.builder,

this.title = '',

this.onGenerateTitle,

this.color,

this.theme,

this.darkTheme,

this.highContrastTheme,

this.highContrastDarkTheme,

this.themeMode = ThemeMode.system,

this.locale,

this.localizationsDelegates,

this.localeListResolutionCallback,

this.localeResolutionCallback,

this.supportedLocales = const <Locale>[Locale('en', 'US')],

this.debugShowMaterialGrid = false,

this.showPerformanceOverlay = false,

this.checkerboardRasterCacheImages = false,

this.checkerboardOffscreenLayers = false,

this.showSemanticsDebugger = false,

this.debugShowCheckedModeBanner = true,? ?

this.shortcuts,

this.actions,

this.restorationScopeId,

this.scrollBehavior,

this.useInheritedMediaQuery = false,

}

屬性較多,重點(diǎn)介紹常用屬性:

title 標(biāo)題。在Android上,標(biāo)題顯示在任務(wù)管理器的應(yīng)用程序快照上方,當(dāng)用戶按下“最近的應(yīng)用程序”按鈕時(shí),會(huì)顯示這些快照。在iOS上,無法使用此值。在web上,它用作頁面標(biāo)題,顯示在瀏覽器的打開選項(xiàng)卡列表中

debugShowCheckedModeBanner 在調(diào)試模式下打開一個(gè)小“DEBUG”橫幅,模擬機(jī)(右上角)debug標(biāo)記是否隱藏,默認(rèn)true是顯示

home

應(yīng)用程序默認(rèn)路由的小部件([Navigator.defaultRouteName],即/)。

這是正常啟動(dòng)應(yīng)用程序時(shí)首先顯示的路由,除非指定了[initialRoute]。

如果home指定了,那么 routes屬性中就不能再注冊根路由,記不能有 {"/": (context) => 一個(gè)組件,} home 將會(huì)取代根路由。

如果[initialRoute]指定了路由則不顯示home的部件而顯示initialRoute路由;如果[initialRoute]指定的路由無法顯示,又將會(huì)顯示home的部件。

routes 路由地址注冊,將要跳轉(zhuǎn)的頁面的標(biāo)識,在跳轉(zhuǎn)的地方使用

Navigator.pushNamed(context, '/routName')就可以實(shí)現(xiàn)

initialRoute

初始化路由的名稱。如果有[navigator],則顯示的是它,也是第一條路由。

默認(rèn)為[dart:ui.PlatformDispatcher.defaultRouteName],這可能會(huì)被啟動(dòng)應(yīng)用程序的代碼覆蓋。

只有在提供了路線(通過[home]、[routes]、[onGenerateRoute]或[onUnknownRoute])的情況下,才能構(gòu)建[navigator];如果不是,[initialRoute]必須為null,[navigator]不得為null。

如果應(yīng)用程序中initialRoute沒有實(shí)現(xiàn)或者實(shí)現(xiàn)錯(cuò)誤從而找不到相應(yīng)的路由,那么將忽略指定的[initialRoute]指定路由,而使用“/”根路由或者使用[home]指定的部件。

如果[initialRoute]指定了路由則不顯示home的部件而顯示initialRoute路由,initialRoute路由“返回上一級頁面”的操作將是返回到[home]指定的部件。

onGenerateRoute 將應(yīng)用導(dǎo)航到命名路由時(shí)使用的路由生成器回調(diào)。

onGenerateInitialRoutes

如果提供了[initialRoute],則用于生成初始路由的路由生成器回調(diào)。

如果未設(shè)置此屬性,則基礎(chǔ)[Navigator.onGenerateInitialRoutes]將默認(rèn)為[Navigator.defaultGenerateInitialRoutes]。

onUnknownRoute

當(dāng)[onGenerateRoute]無法生成路由(initialRoute除外)時(shí)調(diào)用。

此回調(diào)通常用于錯(cuò)誤處理。例如,此回調(diào)可能始終生成一個(gè)“未找到”頁面,描述未找到的路由。

theme

此應(yīng)用程序的材質(zhì)小部件的默認(rèn)視覺屬性,如顏色、字體和形狀。

還可以指定第二個(gè)[darkTheme(暗主題)][ThemeData(主題數(shù)據(jù))]值,用于提供用戶界面的暗版本。如果提供了[darkTheme(暗主題)],則[themeMode(主題模式)]將控制使用哪個(gè)主題。

此屬性的默認(rèn)值是[ThemeData.light()]。

navigatorKey

構(gòu)建[導(dǎo)航器]時(shí)要使用的鍵。

如果指定了[navigatorKey],則可以直接操作[Navigator],而無需首先通過[Navigator.of]:從[navigatorKey]獲取[BuildContext],使用[GlobalKey.currentState]獲取器。

如果更改,將創(chuàng)建一個(gè)新的[導(dǎo)航器],從而丟失過程中的所有應(yīng)用程序狀態(tài);在這種情況下,還必須更改[navigatorObservers],因?yàn)橐郧暗挠^察員將附加到以前的導(dǎo)航器。

只有當(dāng)[onGenerateRoute]不為null時(shí),才會(huì)生成[導(dǎo)航器];如果為null,[navigatorKey]也必須為null。

color

操作系統(tǒng)界面中應(yīng)用程序使用的主顏色。

例如,在Android上,這是應(yīng)用程序切換器中應(yīng)用程序使用的顏色。

useInheritedMediaQuery

如果為true,則將使用繼承的MediaQuery。如果它不可用,或者是錯(cuò)誤的,那么將從窗口構(gòu)建一個(gè)。

不能為null,默認(rèn)為false。

ScrollBehavior

[滾動(dòng)行為]描述[可滾動(dòng)]小部件的行為。提供[滾動(dòng)行為]可以設(shè)置應(yīng)用程序中的默認(rèn)[滾動(dòng)物理],并管理[滾動(dòng)條]和[發(fā)光或滾動(dòng)指示器]等[可滾動(dòng)]裝飾。

如果為null,則默認(rèn)為[材質(zhì)CrollBehavior]。

記:


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容