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卡片组件. 只要是应用程序就少不了交互,基本上 ...
随机推荐
- Java设计模式学习笔记(四) 抽象工厂模式
前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 抽象工厂模式概述 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问 ...
- ~~Python解释器安装教程及环境变量配置~~
进击のpython Python解释器安装教程以及环境变量配置 对于一个程序员来说,能够自己配置python解释器是最基础的技能 那么问题来了,现在市面上有两种Python版本 Python 2.x ...
- Java编程思想:内部类其他知识点
public class Test { public static void main(String[] args) { // InheritInner.test(); // EggTest.test ...
- pgsql查询优化之模糊查询
前言 一直以来,对于搜索时模糊匹配的优化一直是个让人头疼的问题,好在强大pgsql提供了优化方案,下面就来简单谈一谈如何通过索引来优化模糊匹配 案例 我们有一张千万级数据的检查报告表,需要通过检查报告 ...
- 个人永久性免费-Excel催化剂功能第55波-Excel批注相关的批量删除作者、提取所有批注信息等
Excel里的批注,许多人很喜欢用,但批注真的值得我们大量使用吗?批注的使用场景在哪里?这些问题可能更值得花时间来思考下.同样因为不规范地使用批注,也带出了一大堆的后续擦屁股的事情来,从批注中找回有价 ...
- [剑指offer] 53. 表达数值的字符串
题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...
- vijos p1449 字符串还原
学习<algorithm>下的reverse函数 #include<iostream> #include<string> #include<algorithm ...
- Word公式显示为{EMBED Equation.DSMT4}
具体问题表现为: 添加了Mathtype公式后显示为{EMBED Equation.DSMT4}, 超链接显示为大花括号和描述文本, 页码显示为 page... 具体解决方法如下,(以Office2 ...
- 调用百度API进行文本纠错
毕设做的是文本纠错方面,然后今天进组见研究生导师 .老师对我做的东西蛮感兴趣.然后介绍自己现在做的一些项目,其中有个模块需要有用到文本纠错功能. 要求1:有多人同时在线编辑文档,然后文档功能有类似Wo ...
- JedisClient操作redis 单机版和集群版
一.在pom文件中添加依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency&g ...