使用Material Design的Flutter應用

使用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的特定功能(比如AnimatedThemeGridPaper)來構(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)格的原點(第一條主水平線和第一條主垂直線相交處)位于控件的左上角悔叽,通過設置MaterialAppdebugShowMaterialGrid屬性可以啟動一個顯示GridPaper覆蓋圖的應用程序。

import 'package:flutter/material.dart';
void main(){
  runApp(
    new MaterialApp(
      title: 'Flutter應用',
      home: new Text('Flutter應用主屏幕'),
      debugShowMaterialGrid: true,
    ),
  );
}

上面代碼中MaterialApptitle屬性是設備用于識別應用程序的標題(該值未經(jīng)修改就傳遞給WidgetsApp.title)爵嗅,在Android上娇澎,標題出現(xiàn)在任務管理器的應用程序快照上方,當用戶按下“最近的應用”按鈕時顯示這些快照睹晒。同樣趟庄,在iOS上括细,當用戶雙擊“Home”按鈕時,標題將顯示在應用程序切換器中戚啥。

通過MaterialApptheme屬性奋单,可以使用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)可讀性改基,例如顏色可能是明亮的白色,需要黑色文字咖为。

Flutter的默認主題方案

上面代碼還有一個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應用主屏幕'),
    ),
  );
}

使用MaterialAppcolor屬性可以設置操作系統(tǒng)界面中應用程序的主要顏色我衬,例如,在Android上饰恕,這是任務管理器中用于應用程序的顏色挠羔。通過設置MaterialAppshowPerformanceOverlay屬性可以打開顯示性能信息的覆蓋層,通常用于調(diào)試應用程序埋嵌。

在你調(diào)試應用時破加,會發(fā)現(xiàn)應用程序的右上方有一個小的“SLOW MODE”橫幅,顯示這個橫幅的目的在于告知你雹嗦,該應用程序處于檢查模式(PS:實際上是Flutter團隊為了防止你抱怨)范舀。當應用程序處于檢查模式時合是,它的速度會很慢,因為在檢查模式下尿背,F(xiàn)lutter框架會啟動大量耗時的診斷工具來輔助你開發(fā)應用端仰,因此檢查模式下的性能并不代表發(fā)布模式的情況。當然田藐,你也可以選擇不顯示這個“SLOW MODE”橫幅荔烧,通過設置MaterialAppdebugShowCheckedModeBanner屬性可以開啟或關(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文檔臀稚。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市三痰,隨后出現(xiàn)的幾起案子吧寺,更是在濱河造成了極大的恐慌,老刑警劉巖散劫,帶你破解...
    沈念sama閱讀 212,686評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稚机,死亡現(xiàn)場離奇詭異,居然都是意外死亡获搏,警方通過查閱死者的電腦和手機赖条,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來常熙,“玉大人纬乍,你說我怎么就攤上這事÷阄溃” “怎么了仿贬?”我有些...
    開封第一講書人閱讀 158,160評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長墓贿。 經(jīng)常有香客問我诅蝶,道長,這世上最難降的妖魔是什么募壕? 我笑而不...
    開封第一講書人閱讀 56,736評論 1 284
  • 正文 為了忘掉前任调炬,我火速辦了婚禮,結(jié)果婚禮上舱馅,老公的妹妹穿的比我還像新娘缰泡。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 65,847評論 6 386
  • 文/花漫 我一把揭開白布棘钞。 她就那樣靜靜地躺著缠借,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宜猜。 梳的紋絲不亂的頭發(fā)上泼返,一...
    開封第一講書人閱讀 50,043評論 1 291
  • 那天,我揣著相機與錄音姨拥,去河邊找鬼绅喉。 笑死,一個胖子當著我的面吹牛叫乌,可吹牛的內(nèi)容都是我干的柴罐。 我是一名探鬼主播,決...
    沈念sama閱讀 39,129評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼憨奸,長吁一口氣:“原來是場噩夢啊……” “哼革屠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起排宰,我...
    開封第一講書人閱讀 37,872評論 0 268
  • 序言:老撾萬榮一對情侶失蹤似芝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后板甘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體党瓮,經(jīng)...
    沈念sama閱讀 44,318評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,645評論 2 327
  • 正文 我和宋清朗相戀三年虾啦,在試婚紗的時候發(fā)現(xiàn)自己被綠了麻诀。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痕寓。...
    茶點故事閱讀 38,777評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡傲醉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出呻率,到底是詐尸還是另有隱情硬毕,我是刑警寧澤,帶...
    沈念sama閱讀 34,470評論 4 333
  • 正文 年R本政府宣布礼仗,位于F島的核電站吐咳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏元践。R本人自食惡果不足惜韭脊,卻給世界環(huán)境...
    茶點故事閱讀 40,126評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望单旁。 院中可真熱鬧沪羔,春花似錦、人聲如沸象浑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至篓吁,卻和暖如春茫因,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杖剪。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評論 1 267
  • 我被黑心中介騙來泰國打工冻押, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人摘盆。 一個月前我還...
    沈念sama閱讀 46,589評論 2 362
  • 正文 我出身青樓翼雀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親孩擂。 傳聞我的和親對象是個殘疾皇子狼渊,可洞房花燭夜當晚...
    茶點故事閱讀 43,687評論 2 351

推薦閱讀更多精彩內(nèi)容