flutter布局-9-appbar導航欄和狀態(tài)欄

示例 github:flutterlayout https://github.com/LiuC520/flutterlayout

MaterialApp

連載:flutter布局-1-column
連載:flutter布局-2-row
連載:flutter布局-3-center
連載:flutter布局-4-container
連載:[flutter布局-5-Matrix4矩陣變換
連載:flutter布局-6-MaterialApp
連載:flutter布局-7-About對話框
連載:flutter布局-8-animated_icons動畫圖片

AppBar: 包含狀態(tài)欄和導航欄

screenshot.png

先看下上圖的具體用法

  appBar: AppBar(
        title: Container(
          color: Colors.white10,
          child: Row(
            children: <Widget>[Text('標題1'), Text('標題2')],
          ),
        ),
        actions: <Widget>[
          IconButton(
            icon: Icon(Icons.playlist_play),
            tooltip: 'Air it',
            onPressed: null,
          ),
          IconButton(
            icon: Icon(Icons.playlist_add),
            tooltip: 'Restitch it',
            onPressed: null,
          ),
        ],
        leading: Builder(
          builder: (BuildContext context) {
            return IconButton(
              icon: const Icon(Icons.menu),
              onPressed: () {
                Scaffold.of(context).openDrawer();
              },
              tooltip: MaterialLocalizations.of(context).openAppDrawerTooltip,
            );
          },
        ), // 左側返回按鈕,可以有按鈕治笨,可以有文字
        flexibleSpace: Text('d12321312'),
        backgroundColor: Colors.red, //導航欄和狀態(tài)欄的的顏色
        elevation: 10, //陰影的高度
        bottom: PreferredSize(
            child: Text('bottom'),
            preferredSize: Size(30, 30)), // 在appbar下面顯示的東西
        brightness: Brightness.light, //控制狀態(tài)欄的顏色砌们,lignt 文字是灰色的,dark是白色的
        iconTheme: IconThemeData(
            color: Colors.yellow,
            opacity: 0.5,
            size: 30), //icon的主題樣式,默認的顏色是黑色的催烘,不透明為1沥阱,size是24
        textTheme: TextTheme(), //這個主題的參數(shù)比較多,flutter定義了13種不同的字體樣式
        centerTitle: true, //標題是否居中,默認為false
        toolbarOpacity: 0.5, //整個導航欄的不透明度
        bottomOpacity: 0.8, //bottom的不透明度
        titleSpacing: 10, //標題兩邊的空白區(qū)域,
      ),

1. title:標題

可以是文字或者widget伊群,可以自定義
如:

  Container(
          color: Colors.white10,
          child: Row(
            children: <Widget>[Text('標題1'), Text('標題2')],
          ),
        ),
//表示兩個文字橫向排列
// 也可以直接用一個text來代替
Text('標題1')

2. actions:表示右側的按鈕的動作

是一個包含widget的數(shù)組:

actions: <Widget>[
          IconButton(
            icon: Icon(Icons.playlist_play),
            tooltip: 'Air it',
            onPressed: null,
          ),
          IconButton(
            icon: Icon(Icons.playlist_add),
            tooltip: 'Restitch it',
            onPressed: null,
          ),
        ],

上面表示兩個按鈕考杉,同時還有點擊事件,只不過上面我把點擊事件寫成了空的舰始。

3. leading:表示左側的按鈕的動作

這個也是一個widget崇棠,也可以自定義動作,如下:


        leading: Builder(
          builder: (BuildContext context) {
            return IconButton(
              icon: const Icon(Icons.menu),
              onPressed: () {
                Scaffold.of(context).openDrawer();
              },
              tooltip: MaterialLocalizations.of(context).openAppDrawerTooltip,
            );
          },
        ), // 左側返回按鈕蔽午,可以有按鈕易茬,可以有文字
上面表示構造一個新的widget,點擊事件是打開左側的抽屜

4. flexibleSpace:

堆疊在工具欄和標簽欄后面。 它的高度與應用欄的整體高度相同抽莱。

flexible space 實際上并不靈活范抓,除非[AppBar]的容器改變了[AppBar]的大小。 [CustomScrollView]中的[SliverAppBar]在滾動時更改[AppBar]的高度食铐。
也可以看下 FlexibleSpaceBar

flexibleSpace: Text('d12321312'),
   flexibleSpace: FlexibleSpaceBar(
          title: Text('flexibleSpace'),
          background: Icon(Icons
              .add), //背景匕垫,一般是一個圖片,在title后面虐呻,[Image.fit] set to [BoxFit.cover].
          centerTitle: true,
          collapseMode: CollapseMode
              .pin, // 背景 固定到位象泵,直到達到最小范圍。 默認是CollapseMode.parallax(將以視差方式滾動斟叼。)偶惠,還有一個是none,滾動沒有效果
        ),

5. backgroundColor: Colors.red, //導航欄和狀態(tài)欄的的顏色

導航欄的顏色和樣式可以再Main.dart的MaterialApp里面配置統(tǒng)一的朗涩。
但有時間我們的某些頁面有單獨的設計忽孽,這個背景也是可以修改的。
flutter布局-6-MaterialApp

6. elevation: 10, //陰影的高度

默認在導航欄的下面有4的高度陰影谢床,這個也可以修改的

7.bottom :導航欄下面顯示的widget

看上面圖片中的bottom文字

bottom: PreferredSize(
            child: Text('bottom'),
            preferredSize: Size(30, 30)), // 在appbar下面顯示的東西

其中這個bottom是需要PreferredSize的兄一,里面有child和寬高,寬高用size來設置

8.brightness :狀態(tài)欄的亮度

這與[backgroundColor]识腿,[iconTheme]出革,[textTheme]一起設置。
默認是和 ThemeData.primaryColorBrightness 一致的.

Brightness.light,   白底黑字
Brightness.dark,   黑底白字

9. iconTheme渡讼,左側圖表的樣式

iconTheme: IconThemeData(
            color: Colors.yellow,
            opacity: 0.5,
            size: 30), //icon的主題樣式,默認的顏色是黑色的骂束,不透明為1,size是24

表示顏色是黃色成箫,不透明度是0.5栖雾,最大值是1;
以及大小是30伟众,默認的大小是24

10.textTheme:字體的樣式

我們要設置的話一般用merge析藕,這樣不會改變其他的值。

默認有13中樣式:

NAME       SIZE   WEIGHT   SPACING  2018 NAME
display4   112.0  thin     0.0      headline1
display3   56.0   normal   0.0      headline2
display2   45.0   normal   0.0      headline3
display1   34.0   normal   0.0      headline4
headline   24.0   normal   0.0      headline5
title      20.0   medium   0.0      headline6
subhead    16.0   normal   0.0      subtitle1
body2      14.0   medium   0.0      body1
body1      14.0   normal   0.0      body2
caption    12.0   normal   0.0      caption
button     14.0   medium   0.0      button
subtitle   14.0   medium   0.0      subtitle2
overline   10.0   normal   0.0      overline

其中thin 表示字體的粗細為FontWeight.w100
normal是FontWeight.w400
medium是FontWeight.w500
字符間距為0.0
size就是字體的大小

11.centerTitle:標題是否居中

centerTitle: true, //標題是否居中凳厢,默認為false

默認是false账胧,一般我們的設計都是把導航欄的標題居中,不遵循android的md設計先紫,都是按照蘋果的設計來的

12. toolbarOpacity: 0.5, //整個導航欄的不透明度

13. bottomOpacity: 0.8, //bottom的不透明度

14. titleSpacing: 10, //標題兩邊的空白區(qū)域,

示例所在的位置:https://github.com/LiuC520/flutterlayout/blob/master/lib/material/appbar.dart

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末治泥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子遮精,更是在濱河造成了極大的恐慌居夹,老刑警劉巖败潦,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異准脂,居然都是意外死亡劫扒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門狸膏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沟饥,“玉大人,你說我怎么就攤上這事湾戳∠涂酰” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵砾脑,是天一觀的道長幼驶。 經(jīng)常有香客問我,道長韧衣,這世上最難降的妖魔是什么县遣? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮汹族,結果婚禮上,老公的妹妹穿的比我還像新娘其兴。我一直安慰自己顶瞒,他們只是感情好,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布元旬。 她就那樣靜靜地躺著榴徐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匀归。 梳的紋絲不亂的頭發(fā)上坑资,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音穆端,去河邊找鬼袱贮。 笑死,一個胖子當著我的面吹牛体啰,可吹牛的內容都是我干的攒巍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼荒勇,長吁一口氣:“原來是場噩夢啊……” “哼柒莉!你這毒婦竟也來了?” 一聲冷哼從身側響起沽翔,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤兢孝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體跨蟹,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡雳殊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了喷市。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片相种。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖品姓,靈堂內的尸體忽然破棺而出寝并,到底是詐尸還是另有隱情,我是刑警寧澤腹备,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布衬潦,位于F島的核電站,受9級特大地震影響植酥,放射性物質發(fā)生泄漏镀岛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一友驮、第九天 我趴在偏房一處隱蔽的房頂上張望漂羊。 院中可真熱鬧,春花似錦卸留、人聲如沸走越。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旨指。三九已至,卻和暖如春喳整,著一層夾襖步出監(jiān)牢的瞬間谆构,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工框都, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留搬素,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓魏保,卻偏偏與公主長得像蔗蹋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子囱淋,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內容

  • 1.App結構和導航 Scaffold:Material Design布局結構的基本實現(xiàn)猪杭。此類提供了用于顯示dra...
    慕容小偉閱讀 3,714評論 0 3
  • Google 出品,Dart語言妥衣,F(xiàn)lutter Engine引擎皂吮,響應式設計模式戒傻,原生渲染。 目錄 1. 什么是...
    蘭朋友_閱讀 4,703評論 0 3
  • Content: Flutter框架概況發(fā)展概述發(fā)展歷史框架特性框架結構 快速入門安裝Flutter在Mac OS...
    EchoZuo閱讀 6,466評論 3 54
  • 今天蜂筹,偶勒很費勒生日需纳。 居然,還有人關注… 一是感謝艺挪! 二是麻裳,我知道津坑,都是因為我鬧騰疆瑰。 no好意思穆役,謝謝配合寸五。 場...
    俊哥哥哥閱讀 504評論 0 0
  • 愛情心理學研究發(fā)觀掰读,對方的外在形象、內涵價值叭莫、社會條件蹈集,以及自身的需要、興趣雇初、理想拢肆、性格、修養(yǎng)等影響著對象的選擇靖诗。...
    so丶晚安閱讀 185評論 0 0