Fluter:抽屜效果

效果圖


QQ20210928-163812.gif

flutter的抽屜效果是使用Drawer組件實現(xiàn)的

drawer:左邊
endDrawer:右邊

Drawer可以添加頭部屬性:

DrawerHeader:展示頭部基本信息
UserAccountsDrawerHeader:展示用戶頭像例获、姓名稳吮、郵件等信息

child: DrawerHeader(
    child: Center(
      child: Text('header'),
    ),
 ),

child: UserAccountsDrawerHeader(
  accountEmail: new Text('https://www.baidu.com'),
  accountName: new Text('我是一個好人'),
  currentAccountPicture: new CircleAvatar(
      backgroundImage: new AssetImage('images/header.png'),
   ),
)

tabbar底部導(dǎo)航欄:

class TabbarPageState extends State<TabbarPage> {
  @override
  final List<Widget> page_children = [
    HomePage(),
    MePage(),
  ];
  ///頁面
  final List<String> page_title = ['首頁', '我的'];
  ///標題
  int _currentIndex = 0;
  ///當前選中的頁面
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(page_title[_currentIndex]),
        ///導(dǎo)航欄標題
        centerTitle: true, ///導(dǎo)航欄標題居中顯示(IOS默認居中,Android默認靠左)
        leading: _currentIndex == 0 ? Builder( ///自定義抽屜效果按鈕
          builder: (BuildContext context) {
            return IconButton(
                icon: Icon(Icons.menu),
                onPressed: (){
                    Scaffold.of(context).openDrawer();
                }
            );
          },
        ):null,
        actions: _currentIndex == 0 ?  [
          Builder(builder: (context) {
            return IconButton(
                icon: Icon(Icons.settings),
                onPressed: (){
                  Scaffold.of(context).openEndDrawer();
                }
            );
          }),
        ] : null,
      ),
      body: page_children[_currentIndex],
      bottomNavigationBar: new BottomNavigationBar(
        currentIndex: _currentIndex,
        onTap: onChangePage,
        items: [
          new BottomNavigationBarItem(
            icon: Icon(Icons.home),
            label: page_title[_currentIndex],
          ),
          new BottomNavigationBarItem(
            icon: Icon(Icons.person),
            label: page_title[_currentIndex],
          ),
        ],
      ),
      drawer: _currentIndex == 0 ? LeftDrawerPage() : null,
      endDrawer: _currentIndex == 0 ? RightDrawerPage() : null,
    );
  }

  void onChangePage(int index) {
    setState(() {
      _currentIndex = index;
    });
  }
}

抽屜效果左邊

class LeftDrawerPageState extends State<LeftDrawerPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: new AppBar(
        title: Text('設(shè)置'),
        centerTitle: true,///居中
      ),
      body: ListTile(
        leading: Icon(Icons.person),
        title: new Text('個人'),
        subtitle: new Text('個人詳情'),
      ),
    );
  }
}

抽屜效果右邊

class RightDrawerPageState extends State<RightDrawerPage> {
  @override
  Widget build(BuildContext context) {
    return Drawer(
      child: ListView(
        children: <Widget>[
          Container(
            height: 200,
            // child: DrawerHeader(
            //     child: Center(
            //       child: Text('header'),
            //     ),
            // ),
            child: UserAccountsDrawerHeader(
              accountEmail: new Text('https://www.baidu.com'),
              accountName: new Text('我是一個好人'),
              currentAccountPicture: new CircleAvatar(
                backgroundImage: new AssetImage('images/header.png'),
              ),
            ),
          ),
          ListTile(
            leading: Icon(Icons.person),
            title: new Text('個人'),
            subtitle: new Text('個人詳情'),
          ),
          ListTile(
            leading: Icon(Icons.person),
            title: new Text('個人'),
            subtitle: new Text('個人詳情'),
          )
        ],
      ),
    );
  }
}
new AssetImage('images/header.png') 添加本地圖片
Icon(Icons.person) 添加系統(tǒng)中圖標
_currentIndex == 0 ? LeftDrawerPage() : null  此方法是在哪一個頁面添加抽屜效果,否則tabbar所有頁面都將添加。demo中所有的_currentIndex == 0 ? :判斷都是為了只在一個頁面添加

demo鏈接 代碼分支在master下戈二,默認是main需選擇分支

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拟逮,更是在濱河造成了極大的恐慌,老刑警劉巖适滓,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敦迄,死亡現(xiàn)場離奇詭異,居然都是意外死亡凭迹,警方通過查閱死者的電腦和手機罚屋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗅绸,“玉大人脾猛,你說我怎么就攤上這事∮沭” “怎么了猛拴?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵羹铅,是天一觀的道長。 經(jīng)常有香客問我愉昆,道長职员,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任跛溉,我火速辦了婚禮焊切,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芳室。我一直安慰自己专肪,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布渤愁。 她就那樣靜靜地躺著牵祟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抖格。 梳的紋絲不亂的頭發(fā)上诺苹,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音雹拄,去河邊找鬼收奔。 笑死,一個胖子當著我的面吹牛滓玖,可吹牛的內(nèi)容都是我干的坪哄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼势篡,長吁一口氣:“原來是場噩夢啊……” “哼翩肌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起禁悠,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤念祭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后碍侦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粱坤,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年瓷产,在試婚紗的時候發(fā)現(xiàn)自己被綠了站玄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡濒旦,死狀恐怖株旷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情疤估,我是刑警寧澤灾常,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布霎冯,位于F島的核電站,受9級特大地震影響钞瀑,放射性物質(zhì)發(fā)生泄漏沈撞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一雕什、第九天 我趴在偏房一處隱蔽的房頂上張望缠俺。 院中可真熱鬧,春花似錦贷岸、人聲如沸壹士。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躏救。三九已至,卻和暖如春螟蒸,著一層夾襖步出監(jiān)牢的瞬間盒使,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工七嫌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留少办,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓诵原,卻偏偏與公主長得像英妓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绍赛,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

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