Flutter学习笔记(18)--Drawer抽屉组件
如需转载,请注明出处:Flutter学习笔记(18)--Drawer抽屉组件
Drawer(抽屉组件)可以实现类似抽屉拉出和推入的效果,可以从侧边栏拉出导航面板。通常Drawer是和ListView组件组合使用的。
| 属性名 | 类型 | 默认值 | 说明 |
| child | Widget | Drawer的child可以放置任意可显示的对象 | |
| elevation | double | 16 | 墨纸设计中组件的z坐标顺序 |
Drawer组件可以添加头部效果,用DrawerHeader和UserAccountsDrawerHeader这两个组件可以实现。
DrawerHeader:展示基本信息
UserAccountsDraweHeader:展示用户头像、用户名、Email等信息
DrawerHeader组件属性及描述
| 属性名 | 类型 | 说明 |
| decoration | Decoration | header区域的decoration,通常用来设置背景颜色或者背景图片 |
| curve | Curve | 如果decoration发生了变化,则会使用curve设置的变化曲线和duration设置的动画时间来做一个切换动画 |
| child | Widget | header里面所显示的内容控件 |
| padding | EdgeInsetsGeometry | header里面内容控件的padding指。如果child为null的话,则这个值无效 |
| margin | EdgeInsetsGeometry | header四周的间隙 |
| 属性名 | 类型 | 说明 |
| margin | EdgeInsetsGeometry | Header四周的间隙 |
| decoration | Decoration | header区域的decoration,通常用来设置背景颜色或者背景图片 |
| currentAccountPicture | Widget | 用来设置当前用户的头像 |
| otherAccountsPictures | List<Widget> | 用来设置当前用户其他账号的头像 |
| accountName | Widget | 当前用户名 |
| accountEmail | Widget | 当前用户Email |
| onDetailsPressed | VoidCallBack | 当accountName或accountEmail被点击的时候所触发的回调函数,可以用来显示其他额外的信息 |
Demo示例:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget{
final List<Tab> _mTabs = <Tab>[
Tab(text: 'Tab1',icon: Icon(Icons.airline_seat_flat_angled),),
Tab(text: 'Tab2',icon: Icon(Icons.airline_seat_flat_angled),),
Tab(text: 'Tab3',icon: Icon(Icons.airline_seat_flat_angled),),
];
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Drawer Demo',
home: DefaultTabController(
length: _mTabs.length,
child: new Scaffold(
appBar: new AppBar(
//自定义Drawer的按钮
leading: Builder(
builder: (BuildContext context){
return IconButton(
icon: Icon(Icons.wifi_tethering),
onPressed: (){
Scaffold.of(context).openDrawer();
}
);
}
),
title: new Text('Drawer Demo'),
backgroundColor: Colors.cyan,
bottom: new TabBar(
tabs: _mTabs
),
),
body: new TabBarView(
children: _mTabs.map((Tab tab){
return new Center(
child: new Text(tab.text),
);
}).toList()
),
drawer: Drawer(
child: ListView(
children: <Widget>[
Container(
height: ,
child: UserAccountsDrawerHeader(
//设置用户名
accountName: new Text('Drawer Demo 抽屉组件'),
//设置用户邮箱
accountEmail: new Text('www.baidu.com'),
//设置当前用户的头像
currentAccountPicture: new CircleAvatar(
backgroundImage: new AssetImage('images/timg.jpg'),
),
//回调事件
onDetailsPressed: (){
},
),
),
ListTile(
leading: Icon(Icons.wifi),
title: new Text('无线网络1'),
subtitle: new Text('我是副标题'),
),
ListTile(
leading: Icon(Icons.wifi),
title: new Text('无线网络2'),
subtitle: new Text('我是副标题'),
),
ListTile(
leading: Icon(Icons.wifi),
title: new Text('无线网络3'),
subtitle: new Text('我是副标题'),
onTap: (){
print('ssss');
},
),
ListTile(
leading: Icon(Icons.wifi),
title: new Text('无线网络4'),
subtitle: new Text('我是副标题'),
),
],
),
),
)
),
);
}
}
效果截图:

Demo感觉没什么好解释的,就是一般的简单用法,特别说一下,添加Drawer组件,Scaffold会自动给我们生成一个Drawer的按钮,如果我们在appBar中手动设置leading,确实是会更改这个按钮的图标,但是点击这个图标就不会弹出Drawer了,所以如果我们有需要自定义Drawer的图标的话,需要如下处理:
leading: Builder(
builder: (BuildContext context){
return IconButton(
icon: Icon(Icons.wifi_tethering),
onPressed: (){
Scaffold.of(context).openDrawer();
}
);
}
),
Flutter学习笔记(18)--Drawer抽屉组件的更多相关文章
- Flutter学习笔记(9)--组件Widget
如需转载,请注明出处:Flutter学习笔记(9)--组件Widget 在Flutter中,所有的显示都是Widget,Widget是一切的基础,我们可以通过修改数据,再用setState设置数据(调 ...
- Flutter学习笔记(10)--容器组件、图片组件
如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...
- Flutter学习笔记(8)--Dart面向对象
如需转载,请注明出处:Flutter学习笔记(7)--Dart异常处理 Dart作为高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式,基于mixin的继承方式是指:一个类可以继承自多 ...
- Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解
如需转载,请注明出处:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解 最近一段时间生病了,整天往医院跑,也没状态学东西了,现在是好了不少了,也该继续学习啦!!! ...
- Flutter学习笔记(16)--Scaffold脚手架、AppBar组件、BottomNavigationBar组件
如需转载,请注明出处:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解 今天的内容是Scaffold脚手架.AppBar组件.BottomNavigationBa ...
- Flutter学习笔记(11)--文本组件、图标及按钮组件
如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 文本组件 文本组件(text)负责显示文本和定义显示样式,下表为text常见属性 Text组件属性及描述 属性名 类型 默认 ...
- Flutter学习笔记(12)--列表组件
如需转载,请注明出处:Flutter学习笔记(12)--列表组件 在日常的产品项目需求中,经常会有列表展示类的需求,在Android中常用的做法是收集数据源,然后创建列表适配器Adapter,将数据源 ...
- Flutter学习笔记(13)--表单组件
如需转载,请注明出处:Flutter学习笔记(13)--表单组件 表单组件是个包含表单元素的区域,表单元素允许用户输入内容,比如:文本区域,下拉表单,单选框.复选框等,常见的应用场景有:登陆.注册.输 ...
- Flutter学习笔记(21)--TextField文本框组件和Card卡片组件
如需转载,请注明出处:Flutter学习笔记(21)--TextField文本框组件和Card卡片组件 今天来学习下TextField文本框组件和Card卡片组件. 只要是应用程序就少不了交互,基本上 ...
随机推荐
- 9.22考试 crf的视察 题解
这道题当时第一反应就是一道典型的NOIP第一题的难度,绝对要A掉,不然分数一定会被拉开. 然后就开始分析,暴力是一开始想的是用二维树状数组打加上暴力枚举长度,然而这道题满足二分性质,所以时间复杂度就是 ...
- Java 内存映射文件
import java.io.*; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import jav ...
- 使用C#调试Windows服务模板项目
Windows服务是非常强大的应用程序,可用于在backgorund中执行许多不同类型的任务.他们可以在不需要任何用户登录的情况下启动,并且可以使用除登录用户之外的其他用户帐户运行.但是,如果通过遵循 ...
- 你可能不知道的github的秘密
github也可以使用快捷键 先举例子,如何快速查找项目中的文件? 只需要进入项目,并按下T键 在浏览代码时,如何快速跳到指定行? 只需要进入项目,并按下L键 下面是一些常用的快捷键 聚焦搜索栏 按下 ...
- [leetcode] 392. Is Subsequence (Medium)
原题 判断子序列 /** * @param {string} s * @param {string} t * @return {boolean} */ var isSubsequence = func ...
- springboot启动不设置端口
非web工程 在服务架构中,有些springboot工程只是简单的作为服务,并不提供web服务 这个时候不需要依赖 <dependency> <groupId>org.spri ...
- PHP 跨域处理
PHP 跨域处理 跨域访问失败是会出现 No 'Access-Control-Allow-Origin' header is present on the requested resource. Or ...
- 动态规划_Apple Catching_POJ-2385
It and ) in his field, each full of apples. Bessie cannot reach the apples when they are on the tree ...
- Android的步骤
1.开发Activity步骤 第一步:写一个类继承Activity 第二步:重写oncreate方法 第三步:在主配置文件中注册activity <activity android:name=& ...
- web设计_6_图片/标题/说明文字布局
这个web中常见的单元布局,最好的布局方式就是利用float布局. 其中有个很关键的问题是需要清浮动.子集浮动是无法撑开父级的高度. 目前较完善的清浮动解决方案:在浮动的父级上添加.clear,达到清 ...