如需转载,请注明出处:Flutter学习笔记(18)--Drawer抽屉组件

Drawer(抽屉组件)可以实现类似抽屉拉出和推入的效果,可以从侧边栏拉出导航面板。通常Drawer是和ListView组件组合使用的。

Drawer组件属性及说明
属性名 类型 默认值 说明
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四周的间隙
UserAccountsDrawerHeader组件属性及说明
属性名 类型 说明
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抽屉组件的更多相关文章

  1. Flutter学习笔记(9)--组件Widget

    如需转载,请注明出处:Flutter学习笔记(9)--组件Widget 在Flutter中,所有的显示都是Widget,Widget是一切的基础,我们可以通过修改数据,再用setState设置数据(调 ...

  2. Flutter学习笔记(10)--容器组件、图片组件

    如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...

  3. Flutter学习笔记(8)--Dart面向对象

    如需转载,请注明出处:Flutter学习笔记(7)--Dart异常处理 Dart作为高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式,基于mixin的继承方式是指:一个类可以继承自多 ...

  4. Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解

    如需转载,请注明出处:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解 最近一段时间生病了,整天往医院跑,也没状态学东西了,现在是好了不少了,也该继续学习啦!!! ...

  5. Flutter学习笔记(16)--Scaffold脚手架、AppBar组件、BottomNavigationBar组件

    如需转载,请注明出处:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解 今天的内容是Scaffold脚手架.AppBar组件.BottomNavigationBa ...

  6. Flutter学习笔记(11)--文本组件、图标及按钮组件

    如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 文本组件 文本组件(text)负责显示文本和定义显示样式,下表为text常见属性 Text组件属性及描述 属性名 类型 默认 ...

  7. Flutter学习笔记(12)--列表组件

    如需转载,请注明出处:Flutter学习笔记(12)--列表组件 在日常的产品项目需求中,经常会有列表展示类的需求,在Android中常用的做法是收集数据源,然后创建列表适配器Adapter,将数据源 ...

  8. Flutter学习笔记(13)--表单组件

    如需转载,请注明出处:Flutter学习笔记(13)--表单组件 表单组件是个包含表单元素的区域,表单元素允许用户输入内容,比如:文本区域,下拉表单,单选框.复选框等,常见的应用场景有:登陆.注册.输 ...

  9. Flutter学习笔记(21)--TextField文本框组件和Card卡片组件

    如需转载,请注明出处:Flutter学习笔记(21)--TextField文本框组件和Card卡片组件 今天来学习下TextField文本框组件和Card卡片组件. 只要是应用程序就少不了交互,基本上 ...

随机推荐

  1. spring的jar包的下载、说明

    spring的jar包官方下载地址:完整链接:https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-lo ...

  2. @ImportResource导入的xml配置里的Bean能够使用@PropertySource导入的属性值吗?

    每篇一句 大师都是偏执的,偏执才能产生力量,妥协是没有力量的.你对全世界妥协了你就是空气.所以若没有偏见,哪来的大师呢 相关阅读 [小家Spring]详解PropertyPlaceholderConf ...

  3. 根据数据库帮助类采用事务插入图片到sql server数据库中

    我们定义数据库为image类型,然后读取图片为字符流,再保存到数据库中,首先我们定义一个读取图片的公共类,此公共类以后会用到,所以可以建立相应的帮助类 public static byte[] Rea ...

  4. 洛谷P3275 [SCOI2011]糖果 题解

    题目链接: https://www.luogu.org/problemnew/show/P3275 分析: 本题就是一个裸的差分约束. 核心: x=1x=1x=1时,a=b,a−>b,b−> ...

  5. Excel催化剂开源第11波-动态数组函数技术开源及要点讲述

    在Excel催化剂中,大量的自定义函数使用了动态数组函数效果,虽然不是原生的Excel365版效果(听说Excel2019版取消了支持动态数组函数,还没求证到位,Excel365是可以用,但也仅限于部 ...

  6. #!/usr/bin/env bash和#!/usr/bin/bash的比较

    #!/usr/bin/env bash和#!/usr/bin/bash的比较 stackoverflow: http://stackoverflow.com/questions/16365130/th ...

  7. Java&mysql:过滤文件内容,将新文件内容存入mysql数据库

    在上一篇博文jdbc连接数据库中我已经简单介绍了如何连接到mysql数据库,今天要总结的是学长给我布置的一个小作业,把一个很大的已经用","分开了的一行一行的txt文件内容过滤掉注 ...

  8. 异常处理 _this.setData is not a function

    _this.setData is not a function;at api request success callback function TypeError: _this.setData is ...

  9. wangEditor富文本编辑器使用及图片上传

    引入js文件 <script type="text/javascript" src="style/js/wangEditor.min.js">< ...

  10. maven的编译规范

    maven的中央仓库上的jar的包名必须小写.否则maven编译不通过. 如:Memcached-Java-Client-3.0.2 的jar包. 目录如下: com.whalin.memcached ...