12. Flutter——AppBar自定义顶部导航

6 篇文章 0 订阅
4 篇文章 0 订阅

1. Flutter AppBar 自定义顶部按钮图标、颜色

  • 属性:
属性描述
leading在标题前面显示的一个控件,在首页通常显示应用
的 logo;在其他界面通常显示为返回按钮
title标题,通常显示为当前界面的标题文字,可以放组件
actions通常使用 IconButton 来表示,可以放按钮组
bottom通常放 tabBar,标题下面显示一个 Tab 导航栏
backgroundColor导航背景颜色
iconTheme图标样式
textTheme文字样式
centerTitle标题是否居中显示
  • 代码:
import 'package:flutter/material.dart';
class AppBardemoPage extends StatelessWidget {
	@override
	Widget build(BuildContext context) {
		return Scaffold(
			appBar: AppBar(
				backgroundColor:Colors.red,
				leading:IconButton(
					icon: Icon(Icons.menu), 
					tooltip: "Search", 
					onPressed: (){
						print('menu Pressed');
					}
				),
				title: Text('FlutterDemo'), 
				actions: <Widget>[
					IconButton(
						icon: Icon(Icons.search), 
						tooltip: "Search", onPressed: (){
								print('Search Pressed');
					}
				) , 
				IconButton(
					icon: Icon(Icons.more_horiz), 
					tooltip: "more_horiz", 
					onPressed: (){
						print('more_horiz Pressed');
					}
				)
			], 
		),
		body: Text('这是 Appbar'), 
		);
	}
}

2. Flutter AppBar 中自定义 TabBar 实现顶部 Tab 切换

  • 属性:
属性描述
tabs显示的标签内容,一般使用 Tab 对象,也可以是其他的 Widget
controllerTabController 对象
isScrollable是否可滚动
indicatorColor指示器颜色
indicatorWeight指示器高度
indicatorPadding底部指示器的 Padding
indicator指示器 decoration,例如边框等
indicatorSize指示器大小计算方式,TabBarIndicatorSize.label 跟文字等宽,TabBarIndicatorSize.tab 跟每个 tab 等宽
labelColor选中 label颜色
labelStyle选中 label 的 Style
labelPadding每个 label 的 padding 值
unselectedLabelColor未选中 label 颜色
unselectedLabelStyle未选中 label 的 Style
import 'package:flutter/material.dart';
class AppBardemoPage extends StatelessWidget {
	@override
	Widget build(BuildContext context) {
		return MaterialApp(
			home: DefaultTabController(
			length: 2, child: Scaffold(
				appBar: AppBar(
					title: Text('FlutterDemo'), 
					bottom: TabBar(
						tabs: <Widget>[
							Tab(text: "热门"), 
							Tab(text: "推荐")
					]
				)), 
				body: TabBarView(
				children: <Widget>[
					ListView(
						children: <Widget>[
							ListTile(title: Text("这是第一个 tab")),
							ListTile(title: Text("这是第一个 tab")),
							ListTile(title: Text("这是第一个 tab"))
						], 
					),
				ListView(
					children: <Widget>[
					ListTile(title: Text("这是第二个 tab")), 
					ListTile(title: Text("这是第二个 tab")), 
					ListTile(title: Text("这是第二个 tab"))
						], 
					)
				], 
			), ), 
		), );
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值