[Flutter]使用主題

使用主題可以在App里面共享顏色和字體樣式廉羔。在Flutter里面有兩種方式來使用主題,一種是全局范圍的锦募、一種是使用Theme Widget虑瀑, Theme Widget可以在App的某個(gè)部分使用主題。全局的主題其實(shí)也就是MaterialAppTheme 做為根widget了敌厘。

主題定義好后台猴,就可以在Widgets里面使用了。

創(chuàng)建一個(gè)全局主題

MaterialApp 接收一個(gè)theme的參數(shù)俱两,類型為ThemeData饱狂,為App提供統(tǒng)一的顏色和字體。支持的參數(shù)可以在這里查看

new MaterialApp(
    title: title,
    theme: new ThemeData(
        brightness: Brightness.dark,
        primaryColor: Colors.lightBlue[800],
    ),
);

創(chuàng)建一個(gè)局部主題

如果想為某個(gè)頁面使用不同于App的風(fēng)格宪彩,可以使用Theme來覆蓋App的主題.

new Theme(
    data: new ThemeData(
        accentColor: Colors.yellow,
    ),
    child: new Text('Hello World'),
);

擴(kuò)展App的主題

如果你不想覆蓋所有的樣式休讳,可以繼承App的主題,只覆蓋部分樣式尿孔,使用copyWith方法俊柔。

new Theme(
    data: Theme.of(context).copyWith(accentColor: Colors.yellow),
    child: new Text('use copyWith method'),
);

使用主題

創(chuàng)建好主題后,要如何使用呢活合,在Widget的構(gòu)造方法里面通過Theme.of(context)方法來調(diào)用雏婶。

Theme.of(context) 會(huì)查找Widget 樹,并返回最近的一個(gè)Theme對(duì)象白指。如果父層級(jí)上有Theme對(duì)象留晚,則返回這個(gè)Theme,如果沒有,就返回App的Theme告嘲。

new Container(
    color: Theme.of(context).accentColor,
    chile: new Text(
        'Text with a background color',
        style: Theme.of(context).textTheme.title,
    ),
);

完整例子代碼

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final appName = 'Custom Themes';

    return new MaterialApp(
      title: appName,
      theme: new ThemeData(
        brightness: Brightness.dark,
        primaryColor: Colors.lightBlue[800],
        accentColor: Colors.cyan[600],
      ),
      home: new MyHomePage(
        title: appName,
      ),
    );
  }
}

class MyHomePage extends StatelessWidget {
  final String title;

  MyHomePage({Key key, @required this.title}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text(title),
      ),
      body: new Center(
        child: new Container(
          color: Theme.of(context).accentColor,
          child: new Text(
            'Text with a background color',
            style: Theme.of(context).textTheme.title,
          ),
        ),
      ),
      floatingActionButton: new Theme(
        data: Theme.of(context).copyWith(accentColor: Colors.yellow),
        child: new FloatingActionButton(
          onPressed: null,
          child: new Icon(Icons.add),
        ),
      ),
    );
  }
}

關(guān)于學(xué)習(xí)

flutter的學(xué)習(xí)文章都整理在這個(gè)github倉庫

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末错维,一起剝皮案震驚了整個(gè)濱河市奖地,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赋焕,老刑警劉巖参歹,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宏邮,居然都是意外死亡泽示,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蜜氨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來械筛,“玉大人,你說我怎么就攤上這事飒炎÷裼矗” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵郎汪,是天一觀的道長赤赊。 經(jīng)常有香客問我,道長煞赢,這世上最難降的妖魔是什么抛计? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮照筑,結(jié)果婚禮上吹截,老公的妹妹穿的比我還像新娘。我一直安慰自己凝危,他們只是感情好波俄,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蛾默,像睡著了一般懦铺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上支鸡,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天冬念,我揣著相機(jī)與錄音,去河邊找鬼牧挣。 笑死刘急,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浸踩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼统求,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼检碗!你這毒婦竟也來了据块?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤折剃,失蹤者是張志新(化名)和其女友劉穎另假,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怕犁,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡边篮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奏甫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戈轿。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阵子,靈堂內(nèi)的尸體忽然破棺而出思杯,到底是詐尸還是另有隱情,我是刑警寧澤挠进,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布色乾,位于F島的核電站,受9級(jí)特大地震影響领突,放射性物質(zhì)發(fā)生泄漏暖璧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一君旦、第九天 我趴在偏房一處隱蔽的房頂上張望澎办。 院中可真熱鬧,春花似錦于宙、人聲如沸浮驳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽至会。三九已至,卻和暖如春谱俭,著一層夾襖步出監(jiān)牢的瞬間奉件,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國打工昆著, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留县貌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓凑懂,卻偏偏與公主長得像煤痕,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,517評(píng)論 25 707
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程摆碉,因...
    小菜c閱讀 6,358評(píng)論 0 17
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理塘匣,服務(wù)發(fā)現(xiàn),斷路器巷帝,智...
    卡卡羅2017閱讀 134,600評(píng)論 18 139
  • 雞腿總能勾起我們的饞蟲楞泼,它方便好做驰徊、吃法多樣、肉質(zhì)細(xì)嫩……無論是外皮脆焦堕阔、內(nèi)里香甜的照燒雞腿棍厂,還是浸透麻油味道,鮮...
    一坪海岸線閱讀 415評(píng)論 0 2
  • Cookie Cookie印蔬,指某些網(wǎng)站為了辨別用戶身份勋桶、進(jìn)行session跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)...
    幻想無極閱讀 479評(píng)論 0 2