如需转载,请注明出处: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. 《Graph Neural Networks: A Review of Methods and Applications》阅读笔记

    本文是对文献 <Graph Neural Networks: A Review of Methods and Applications> 的内容总结,详细内容请参照原文. 引言 大量的学习 ...

  2. 用MATLB仿真一个单闭环控制量,同时还存在两个开环控制变量的阶跃响应曲线。(自动控制方法是PID中的P控制。通过查表法直接给开环参数稳态最佳的大小)

    实际项目背景:甘肃省,航天510所的LIPS100电推力器.一共有三个控制变量,开环控制变量是:Ia(阳极电流).mmrf(阳极主流率) 这个阳极主流率是阀门变量,不能够突变,模拟用(大学一年级课,电 ...

  3. ZIP:Checksum

    Checksum: long getValue() :返回当前的校验和值. void reset() :将校验和重置为其初始值. void update(byte[] b, int off, int ...

  4. 使用R语言预测产品销量

    使用R语言预测产品销量 通过不同的广告投入,预测产品的销量.因为响应变量销量是一个连续的值,所以这个问题是一个回归问题.数据集共有200个观测值,每一组观测值对应一种市场情况. 数据特征 TV:对于一 ...

  5. 洛谷P2055 [ZJOI2009]假期的宿舍 题解

    题目链接: https://www.luogu.org/problemnew/show/P2055 分析: 这道题比较简单,二分图的练习题(当然最大流同理). 易得我们可以将人放在一侧,床放在一侧. ...

  6. 2019牛客多校第二场D-Kth Minimum Clique

    Kth Minimum Clique 题目传送门 解题思路 我们可以从没有点开始,把点一个一个放进去,先把放入一个点的情况都存进按照权值排序的优先队列,每次在新出队的集合里增加一个新的点,为了避免重复 ...

  7. 在Ubuntu中安装Docker和docker的使用

    1.在Ubuntu中安装Docker 更新ubuntu的apt源索引 sudo apt-get update 安装包允许apt通过HTTPS使用仓库 sudo apt-get install \ ap ...

  8. E-R图怎么绘制

    E-R图中主要涉及到的元素有: 实体:用长方形表示 关联关系:用菱形表示 属性:用椭圆表示 参考一个例子:

  9. 详述Spring对数据校验支持的核心API:SmartValidator

    每篇一句 要致富,先修路.要使用,先...基础是需要垒砌的,做技术切勿空中楼阁 相关阅读 [小家Java]深入了解数据校验:Java Bean Validation 2.0(JSR303.JSR349 ...

  10. 必懂的webpack高级配置

    webpack高级配置 1.HTML中img标签的图片资源处理 使用时.只需要在html中正常引用图片即可.webpack就会找到对应的资源进行打包.并修改html中的引用路径 主要是将html中的i ...