網站首頁 編程語言 正文
本文實例為大家分享了Flutter中抽屜組件Drawer實現代碼,供大家參考,具體內容如下
1、概述
Scalfold 是 Flutter MaterialApp 常用的布局 Widget,接受一個 drawer屬性,支持配置 Drawer,可以實現從側邊欄拉出導航面板,好處是把一些功能菜單折疊起來,通常Drawer是和Listview組件或者 Column組合使用進行縱向布局。Listview組件是豎排排列的,上下可滑動。
【注意】如果沒有設置 AppBar 的 leading 屬性,則當使用 Drawer 的時候會自動顯示一個 IconButton 來告訴用戶有側邊欄(在 Android 上通常是顯示為三個橫的圖標)。
2、Drawer組件常見屬性
child:Widget類型,可以放置任意可顯示對象
elevation:double類型,組件的Z坐標的順序
import 'package:demo_app/pages/drawer/drawer.dart'; import 'package:flutter/material.dart'; class Home extends StatelessWidget { ? @override ? Widget build(BuildContext context) { ? ? return Scaffold( ? ? ? appBar: AppBar(),? ? ? ? body: Container(),? ? ? ? drawer: DrawLayout() ? ? ); ? } }
import 'package:flutter/material.dart'; class DrawLayout extends StatelessWidget { ? @override ? Widget build(BuildContext context) { ? ? return Drawer( ? ? ? child: Text('drawer') ? ? ); ? } }
3、Drawer可以添加頭部效果
- DrawerHeader:展示頭部基本信息
- UserAccountsDrawerHeader:展示用戶頭像、用戶名、email等信息
4、DrawerHeader常用屬性
- child:Widget類型,Header里面所顯示的內容控件
- padding、margin
- decoration:Decoration類型,header區域的decoration,通常用來設置背景顏色或者背景圖片。
import 'package:flutter/material.dart'; class DrawLayout extends StatelessWidget { ? @override ? Widget build(BuildContext context) { ? ? return Drawer( ? ? ? child: ListView( ? ? ? ? padding: EdgeInsets.all(0.0), ? ? ? ? children:[ ? ? ? ? ? DrawerHeader( ? ? ? ? ? ? child: Center( ? ? ? ? ? ? ? child: Text('drawer') ? ? ? ? ? ? ), ? ? ? ? ? ? decoration: BoxDecoration( ? ? ? ? ? ? ? color: Colors.blue ? ? ? ? ? ? ), ? ? ? ? ? ) ? ? ? ? ] ? ? ? ) ? ? ); ? } }
5、UserAccountsDrawerHeader常用屬性
- currentAccountPicture:Widget類型,用來設置當前用戶的頭像
- accountName:Widget類型,當前用戶的名字
- accountEmail:Widget類型,當前用戶的 Email
- onDetailsPressed: VoidCallback類型,當 accountName 或者 accountEmail 被點擊的時候所觸發的回調函數,可以用來顯示其他額外的信息
- otherAccountsPictures:List類型,用來設置當前用戶的其他賬號的頭像
- decoration:Decoration類型,header區域的decoration,通常用來設置背景顏色或者背景圖片。
- margin
import 'package:flutter/material.dart'; class DrawLayout extends StatelessWidget { ? @override ? Widget build(BuildContext context) { ? ? return Drawer( ? ? ? child: ListView( ? ? ? ? padding: EdgeInsets.all(0.0), ? ? ? ? children:[ ? ? ? ? ? UserAccountsDrawerHeader( ? ? ? ? ? ? accountName: Text('username'), ? ? ? ? ? ? accountEmail: Text('username@163.com'), ? ? ? ? ? ? currentAccountPicture: CircleAvatar( ? ? ? ? ? ? ? child: Icon(Icons.home), ? ? ? ? ? ? ), ? ? ? ? ? ? onDetailsPressed: (){}, ? ? ? ? ? ? otherAccountsPictures: [ ? ? ? ? ? ? ? CircleAvatar( ? ? ? ? ? ? ? ? child: Icon(Icons.settings) ? ? ? ? ? ? ? ), ? ? ? ? ? ? ], ? ? ? ? ? ? decoration: BoxDecoration( ? ? ? ? ? ? ? color: Colors.green ? ? ? ? ? ? ), ? ? ? ? ? ), ? ? ? ? ? ListTile( ? ? ? ? ? ? title: Text('設置'), ? ? ? ? ? ? leading: Icon(Icons.settings), ? ? ? ? ? ? trailing: Icon(Icons.arrow_forward_ios) ? ? ? ? ? ) ? ? ? ? ] ? ? ? ) ? ? ); ? } }
原文鏈接:https://blog.csdn.net/sinat_38328891/article/details/104360312
相關推薦
- 2022-01-30 Unknown custom element: <router-view> - did you re
- 2022-04-18 Taro中設置 tabbar上的徽章。
- 2022-11-11 Android布局ConstraintLayout代碼修改約束及輔助功能_Android
- 2021-12-04 淺談C++中const與constexpr的區別_C 語言
- 2022-07-22 關于不定方程解的個數的問題
- 2023-04-17 Python屬性私有化詳解_python
- 2024-02-17 BDD - Python Behave 用戶自定義配置文件
- 2022-09-22 Linux 內存和SWAP使用
- 最近更新
-
- 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同步修改后的遠程分支