設(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