flutter標(biāo)題欄Appbar的封裝

設(shè)置標(biāo)題欄高度PreferredSize

Flutter的標(biāo)題欄通常使用AppBar, 但是AppBar并沒有提供設(shè)置高度的參數(shù), 需要使用PreferredSize包裹appbar, 并設(shè)置preferredSize屬性

設(shè)置appbar中的控件

通過leading和actions屬性設(shè)置左右的控件
通過title指定標(biāo)題欄的控件
通過centerTitle指定默認(rèn)標(biāo)題欄的位置, 默認(rèn)Android上是false, 默認(rèn)偏左

  • backAppbar可以返回一個(gè)只有標(biāo)題和返回鍵的標(biāo)題欄
import 'package:bigtoe/style/qss_color.dart';
import 'package:flutter/material.dart';

/**
 * Created with IntelliJ IDEA.
 * Package: utils
 * Author: sirai
 * Create Time: 2019-06-24 16:10
 * QQ: 785716471
 * Email: 785716471@qq.com
 * Description:公共的titlebar
 */

class TitleBar {

  /**
   * 僅含 左側(cè)返回按鈕 及中間標(biāo)題
   * appBar: TitleBar().backAppbar(context, '個(gè)人資料'),
   * appBar: TitleBar().backAppbar(context, '個(gè)人資料',(){}),
   */
  backAppbar(BuildContext context, String title,{VoidCallback onPressed}) {
    return PreferredSize(
        preferredSize: Size.fromHeight(48),
        child: AppBar(
          title: Text(
            title,
            style: TextStyle(color: QssColors.black, fontSize: 16),
          ),
          centerTitle: true,
          leading: _leading(context,onPressed),
          brightness: Brightness.light,
          backgroundColor: QssColors.white,
          elevation: 0,
          iconTheme: IconThemeData(color: QssColors.black),
        ));
  }
  
  /**
   * 設(shè)置左側(cè)按鈕
   */
  _leading(BuildContext context, VoidCallback onPressed) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        Container(
          width: 44,
          padding: EdgeInsets.all(0),
          child: new IconButton(
            padding: EdgeInsets.only(left: 16, right: 16),
//            icon: Image.asset(
//              'assets/images/ic_black_left_arrow.png',
//              fit: BoxFit.contain,
//              width: 16,
//              height: 16,
//            ),
            icon: Icon(Icons.chevron_left),
            onPressed: () {
              if (onPressed == null) {
                _popThis(context);
              } else {
                onPressed();
              }
            },
          ),
        ),
      ],
    );
  }


  /**
   * 關(guān)閉頁面
   */
  _popThis(BuildContext context){
    Navigator.of(context).pop();
  }

}

轉(zhuǎn)載 https://blog.csdn.net/u014449046/article/details/92242982

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、窗體 1、常用屬性 (1)Name屬性:用來獲取或設(shè)置窗體的名稱,在應(yīng)用程序中可通過Name屬性來引用窗體。 ...
    Moment__格調(diào)閱讀 4,782評(píng)論 0 11
  • 翻譯自“Auto Layout Guide”。 2 自動(dòng)布局細(xì)則手冊(cè) 2.1 堆棧視圖 接下來的章節(jié)展示了如何使用...
    lakerszhy閱讀 1,988評(píng)論 3 9
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,663評(píng)論 1 32
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,334評(píng)論 0 17
  • HTML標(biāo)簽解釋大全 一、HTML標(biāo)記 標(biāo)簽:!DOCTYPE 說明:指定了 HTML 文檔遵循的文檔類型定義(D...
    米塔塔閱讀 3,530評(píng)論 1 41

友情鏈接更多精彩內(nèi)容