網站首頁 編程語言 正文
AppBar 組件的結構
AppBar 組件的代碼
AppBar(
leading: Icon(Icons.home), // 導航圖標
title: Text('AppBar Title'), // 頁面標題
actions: <Widget>[ // 頂部菜單
IconButton(
onPressed: () {},
icon: Icon(Icons.build),
),
IconButton(
onPressed: () {},
icon: Icon(Icons.add),
)
],
)
頂部選項卡
// 混入SingleTickerProviderStateMixin
class _AppBarSampleState extends State<AppBarSample>
with SingleTickerProviderStateMixin {
// 存放各個可選項的數組
List<Item> items = const <Item>[
const Item(title: 'Item1', icon: Icons.directions_car),
const Item(title: 'Item2', icon: Icons.directions_bike),
const Item(title: 'Item3', icon: Icons.directions_boat),
const Item(title: 'Item4', icon: Icons.directions_walk),
];
// 創建切換控制器
TabController _tabController;
@override
void initState() {
super.initState();
// 初始化控制器
_tabController = TabController(length: items.length, vsync: this);
}
@override
void dispose() {
// 釋放資源
_tabController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
// 頂部菜單欄
appBar: AppBar(
// ...
bottom: TabBar(
// 選項可滾動
isScrollable: true,
// 為TabBar配置控制器
controller: _tabController,
tabs: items.map((Item item) {
// 根據數據返回Tab組件
return Tab(
text: item.title,
icon: Icon(item.icon),
);
}).toList(),
)
),
body: Center(
child: Text('body'),
),
);
}
}
body中使用TabBarView組件對應各個選項卡所關聯的主體視圖,它的children屬性接受一組組件來展示與每個選項卡對應的主體內容。
Scaffold(
// 頂部菜單欄
appBar: AppBar(
// ...
bottom: TabBar(
controller: _tabController,
tabs: items.map((Item item) {
return Tab(
text: item.title,
icon: Icon(item.icon),
);
}).toList(),
)),
// Scaffold中的主體布局
body: TabBarView(
// 為TabBarView配置與TabBar相同的控制器
controller: _tabController,
children: items.map((Item item) {
// 返回選中相應選項時主體中顯示的組件
return Center(
child: Text(item.title, style: TextStyle(fontSize: 20.0),),
);
}).toList(),
),
)
- 選項卡和主體內容的控制器都是 _tabController
抽屜菜單
- 左抽屜菜單 drawer
- 右抽屜菜單 endDrawer
class _DrawerSampleState extends State<DrawerSample> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Drawer Demo'),
),
drawer: MyDrawer(),
);
}
}
class MyDrawer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: const <Widget>[
DrawerHeader(
decoration: BoxDecoration(
color: Colors.blue,
),
child: Text(
'菜單頭部',
style: TextStyle(
color: Colors.white,
fontSize: 24,
),
),
),
ListTile(
leading: Icon(Icons.message),
title: Text('消息'),
),
ListTile(
leading: Icon(Icons.account_circle),
title: Text('我的'),
),
ListTile(
leading: Icon(Icons.settings),
title: Text('設置'),
),
],
),
);
}
}
- ListTile組件的基本結構
為Scaffold組件指定drawer屬性后,AppBar就會自動生成一個導航圖標,單擊這個圖標后抽屜欄就會彈出。
自定義導航圖標
- automaticallyImplyLeading 為 false 時,不顯示導航圖標
Scaffold(
appBar: AppBar(
automaticallyImplyLeading: false,
title: const Text('Drawer Demo'),
),
drawer: MyDrawer(),
)
- AppBar里的 leading 可以自定義其他導航圖標
AppBar(
leading: Icon(Icons.home), // 導航圖標
……
)
原文鏈接:https://blog.csdn.net/weixin_41192489/article/details/124614143
- 上一篇:flutter 布局管理詳解
- 下一篇:flutter 創建項目、運行項目、項目目錄
相關推薦
- 2022-04-06 go語言限制協程并發數的方案詳情_Golang
- 2022-05-31 如何使用正則表達式判斷郵箱(以C#為例)_C#教程
- 2022-04-14 python實現購物車小程序_python
- 2022-12-23 C++中關于getchar()的使用方法_C 語言
- 2022-07-29 使用React?Router?v6?添加身份驗證的方法_React
- 2022-04-04 Error running : No valid Maven installation found.
- 2022-10-06 修復python-memcached在python3.8環境中報SyntaxWarning的問題(完
- 2022-05-25 version `GLIBC_2.18‘ not found
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支