Flutter 19 - Button 組件詳解

一翠忠、基本介紹

Flutter 里有很多的 Button 組件很多寄摆,常見的按鈕組件有:

  1. RaisedButton :凸起的按鈕娱局,其實就是 Material Design 風(fēng)格的 Button
  2. FlatButton :扁平化的按鈕
  3. OutlineButton :線框按鈕
  4. IconButton :圖標(biāo)按鈕
  5. ButtonBar :按鈕組
  6. FloatingActionButton :浮動按鈕

二郎逃、常用屬性

屬性名稱 值類型 屬性值
onPressed VoidCallback 必填參數(shù)肩刃,按下按鈕時觸發(fā)的回調(diào)精绎,接收一個 方法速缨,傳 null 表示按鈕禁用,會顯示禁用相關(guān) 樣式
child Widget 文本控件
color Color 按鈕的顏色
disabledColor Color 按鈕禁用時的顏色
disabledTextColor Color 按鈕禁用時的文本顏色
splashColor Color 點擊按鈕時水波紋的顏色
highlightColor Color 點擊(長按)按鈕后按鈕的顏色
elevation double 陰影的范圍捺典,值越大陰影范圍越大
padding 內(nèi)邊距
shape 設(shè)置按鈕的形狀
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)
)
shape: CircleBorder(
side: BorderSide( color: Colors.white )
)

三鸟廓、示例實現(xiàn)

import 'package:flutter/material.dart';

class ButtonDemoPage extends StatelessWidget {
    const ButtonDemoPage({Key key}) : super(key: key);
    
    @override
    Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(
                title: Text("按鈕演示頁面")
            ),
            body: Center(
                child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                        Row(
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: <Widget>[
                                RaisedButton(
                                    child: Text('普通按鈕'),
                                    onPressed: () { 
                                        print('點擊了普通按鈕');
                                    }
                                ),
                                SizedBox(width: 20),
                                RaisedButton(
                                    child: Text('有顏色的按鈕'),
                                    textColor: Colors.white,
                                    color: Colors.blue,
                                    onPressed: () {
                                        print('點擊了有顏色的按鈕'); 
                                    }
                                ),
                                SizedBox(width: 20),
                                RaisedButton(
                                    child: Text('陰影按鈕'),
                                    textColor: Colors.white,
                                    color: Colors.blue,
                                    elevation:10,
                                    onPressed: () {
                                        print('點擊了陰影按鈕'); 
                                    }
                                )
                            ]
                        ),
                        SizedBox(height: 40),
                        Row(
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: <Widget>[
                                Container(
                                    height: 60,
                                    width: 200,
                                    child: RaisedButton(
                                        child: Text('有寬高的按鈕'),
                                        textColor: Colors.white, 
                                        color: Colors.blue,
                                        elevation:10,
                                        onPressed: () { 
                                            print('點擊了有寬高的按鈕');
                                        }
                                    )
                                ) 
                            ]
                        ),
                        SizedBox(height: 40),
                        Row(
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: <Widget>[
                                Expanded(
                                    child: Container(
                                        height: 60,
                                        margin: EdgeInsets.all(20),
                                        child: RaisedButton(
                                            child: Text('全屏按鈕'), 
                                            textColor: Colors.white,
                                            color: Colors.blue, 
                                            elevation:10,
                                            onPressed: () {
                                                print('點擊了全屏按鈕'); 
                                            }
                                        )
                                    )
                                )
                            ]
                        ),
                        Row(
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: <Widget>[
                                Expanded(
                                    child: Container(
                                        height: 60,
                                        margin: EdgeInsets.all(20),
                                        child: RaisedButton(
                                            child: Text('帶圓角的按鈕'), 
                                            textColor: Colors.white,
                                            color: Colors.blue,
                                            elevation:10,
                                            shape: RoundedRectangleBorder(
                                                borderRadius: BorderRadius.circular(10)
                                            ),
                                            onPressed: () {
                                                print('點擊了帶圓角的按鈕');
                                            }
                                        )
                                    )
                                )
                            ]
                        )
                    ]
                )
            )
        );
    }
}

三、FloatingActionButton 介紹

FloatingActionButton簡稱FAB ,可以實現(xiàn)浮動按鈕襟己,也可以實現(xiàn)類似閑魚app的地步凸起導(dǎo)航

屬性名稱 屬性值
child 子視圖引谜,一般為 Icon,不推薦使用文字
tooltip FAB 被長按時顯示擎浴,也是無障礙功能
backgroundColor 背景顏色
elevation 未點擊的時候的陰影
hignlightElevation 點擊時陰影值员咽,默認 12.0
onPressed 點擊事件回調(diào)
shape 可以定義 FAB 的形狀等
mini 是否是 mini 類型默認 false

四、實現(xiàn)閑魚 app 底部凸起按鈕


閑魚.png
return Scaffold(
    appBar: AppBar(
        title: Text("Flutter App")
    ),
    floatingActionButton:Container(
        height: 80,
        width: 80,
        decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(40),
            color: Colors.white
        ),
        margin: EdgeInsets.only(top:10),
        padding: EdgeInsets.all(8),
        child:  FloatingActionButton(
            child: Icon(Icons.add),
            backgroundColor: this._currentIndex == 1? Colors.red : Colors.yellow,
            onPressed: (){
                // print('點擊 1'); setState(() {
                this._currentIndex=1;
            }
        );
        }
    )
    ),
    floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked
)    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贮预,一起剝皮案震驚了整個濱河市贝室,隨后出現(xiàn)的幾起案子契讲,更是在濱河造成了極大的恐慌,老刑警劉巖滑频,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捡偏,死亡現(xiàn)場離奇詭異,居然都是意外死亡峡迷,警方通過查閱死者的電腦和手機银伟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绘搞,“玉大人彤避,你說我怎么就攤上這事『幌剑” “怎么了琉预?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蒿褂。 經(jīng)常有香客問我圆米,道長,這世上最難降的妖魔是什么贮缅? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任榨咐,我火速辦了婚禮,結(jié)果婚禮上谴供,老公的妹妹穿的比我還像新娘块茁。我一直安慰自己,他們只是感情好桂肌,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布数焊。 她就那樣靜靜地躺著,像睡著了一般崎场。 火紅的嫁衣襯著肌膚如雪佩耳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天谭跨,我揣著相機與錄音干厚,去河邊找鬼。 笑死螃宙,一個胖子當(dāng)著我的面吹牛蛮瞄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谆扎,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼挂捅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了堂湖?” 一聲冷哼從身側(cè)響起闲先,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤状土,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后伺糠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒙谓,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年退盯,在試婚紗的時候發(fā)現(xiàn)自己被綠了彼乌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泻肯。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡渊迁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出灶挟,到底是詐尸還是另有隱情琉朽,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布稚铣,位于F島的核電站箱叁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏惕医。R本人自食惡果不足惜耕漱,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抬伺。 院中可真熱鬧螟够,春花似錦、人聲如沸峡钓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽能岩。三九已至寞宫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拉鹃,已是汗流浹背辈赋。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留膏燕,地道東北人钥屈。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像煌寇,于是被迫代替她去往敵國和親焕蹄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

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