使用Flutter框架必須要導入flutter/material.dart
包,然后在main()
函數(shù)中調(diào)用runApp
函數(shù),這樣就可以啟動一個Flutter應用。訪問《Flutter框架基礎(chǔ)》了解更多內(nèi)容。
import 'package:flutter/material.dart';
void main() {
return runApp(Widget app);
}
那么如何創(chuàng)建一個使用Material Design的Flutter應用呢层玲?使用flutter/material.dart
包的MaterialApp
類。MaterialApp
是一個實用的控件反症,它通過添加Material Design的特定功能(比如AnimatedTheme
和GridPaper
)來構(gòu)建WidgetsApp
称簿,包裝了很多Material Design應用程序常用的控件。
使用WidgetsApp
可以創(chuàng)建一個包裝了很多應用程序常用控件的控件惰帽,它有一個主要作用是綁定系統(tǒng)的后退按鈕憨降,以實現(xiàn)彈出導航器(Navigator
)或退出應用程序。使用AnimatedTheme
可以創(chuàng)建一個動畫主題(Theme
)该酗,在指定的主題發(fā)生變化時自動轉(zhuǎn)換顏色等授药。使用GridPaper
可以創(chuàng)建一個繪制1像素寬的直線網(wǎng)格的控件,可用于在網(wǎng)格中可視化堆棧(Stack
)布局呜魄,網(wǎng)格的原點(第一條主水平線和第一條主垂直線相交處)位于控件的左上角悔叽,通過設置MaterialApp
的debugShowMaterialGrid
屬性可以啟動一個顯示GridPaper
覆蓋圖的應用程序。
import 'package:flutter/material.dart';
void main(){
runApp(
new MaterialApp(
title: 'Flutter應用',
home: new Text('Flutter應用主屏幕'),
debugShowMaterialGrid: true,
),
);
}
上面代碼中MaterialApp
的title
屬性是設備用于識別應用程序的標題(該值未經(jīng)修改就傳遞給WidgetsApp.title
)爵嗅,在Android上娇澎,標題出現(xiàn)在任務管理器的應用程序快照上方,當用戶按下“最近的應用”按鈕時顯示這些快照睹晒。同樣趟庄,在iOS上括细,當用戶雙擊“Home”按鈕時,標題將顯示在應用程序切換器中戚啥。
通過MaterialApp
的theme
屬性奋单,可以使用material
包的ThemeData
類來配置主題方案,用于應用程序的控件顏色猫十。如下面代碼所示览濒,你可以根據(jù)不同平臺設置不同的主題,比如在iOS上設置白色和灰色主題拖云,在Android上設置紫色和橙色主題贷笛。判斷平臺類型需要使用foundation
包(包含F(xiàn)lutter框架底層的實用程序類和函數(shù))的defaultTargetPlatform
屬性來識別當前系統(tǒng)平臺,然后根據(jù)平臺類型設置對應的主題宙项。
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
final ThemeData kIOSTheme = new ThemeData(
primarySwatch: Colors.orange,
primaryColor: Colors.grey[100],
primaryColorBrightness: Brightness.light,
);
final ThemeData kAndroidTheme = new ThemeData(
primarySwatch: Colors.purple,
accentColor: Colors.orangeAccent[400],
);
void main(){
runApp(
new MaterialApp(
title: 'Flutter應用',
theme: defaultTargetPlatform == TargetPlatform.iOS
? kIOSTheme
: kAndroidTheme,
home: new Text('Flutter應用主屏幕'),
),
);
}
上面代碼中乏苦,ThemeData
類的primaryColorBrightness
屬性設置的是primaryColor
的亮度,需要注意這里的亮度是描述顏色的對比度需求杉允,有兩個常量:Brightness.dark
表示顏色很暗,需要淺色文字顏色才能實現(xiàn)可讀性席里,例如顏色可能是深灰色叔磷,需要白色文字;Brightness.light
表示顏色很淺奖磁,需要深色文字顏色來實現(xiàn)可讀性改基,例如顏色可能是明亮的白色,需要黑色文字咖为。
上面代碼還有一個primarySwatch
屬性秕狰,Swatch稱為“調(diào)色板”,是具有相似顏色(ARGB格式的不可變的32位值)的小表躁染,表示Material Design的調(diào)色板鸣哀。更多關(guān)于調(diào)色板的細節(jié),請訪問Flutter API文檔吞彤。
import 'package:flutter/material.dart';
void main(){
runApp(
new MaterialApp(
title: 'Flutter應用',
color: Colors.red,
showPerformanceOverlay: true,
home: new Text('Flutter應用主屏幕'),
),
);
}
使用MaterialApp
的color
屬性可以設置操作系統(tǒng)界面中應用程序的主要顏色我衬,例如,在Android上饰恕,這是任務管理器中用于應用程序的顏色挠羔。通過設置MaterialApp
的showPerformanceOverlay
屬性可以打開顯示性能信息的覆蓋層,通常用于調(diào)試應用程序埋嵌。
在你調(diào)試應用時破加,會發(fā)現(xiàn)應用程序的右上方有一個小的“SLOW MODE”橫幅,顯示這個橫幅的目的在于告知你雹嗦,該應用程序處于檢查模式(PS:實際上是Flutter團隊為了防止你抱怨)范舀。當應用程序處于檢查模式時合是,它的速度會很慢,因為在檢查模式下尿背,F(xiàn)lutter框架會啟動大量耗時的診斷工具來輔助你開發(fā)應用端仰,因此檢查模式下的性能并不代表發(fā)布模式的情況。當然田藐,你也可以選擇不顯示這個“SLOW MODE”橫幅荔烧,通過設置MaterialApp
的debugShowCheckedModeBanner
屬性可以開啟或關(guān)閉顯示。
import 'package:flutter/material.dart';
void main(){
runApp(
new MaterialApp(
title: 'Flutter應用',
debugShowCheckedModeBanner: false,
home: new Text('Flutter應用主屏幕'),
),
);
}
除了以上功能汽久,MaterialApp
還負責實現(xiàn)國際化(支持多種語言)鹤竭、路由與導航(多屏幕之間轉(zhuǎn)場)等功能。更多關(guān)于MaterialApp
類的細節(jié)景醇,請訪問Flutter API文檔臀稚。