Flutter实现侧边栏功能
时间:2022-07-24
本文章向大家介绍Flutter实现侧边栏功能,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
实现侧边栏功能是用到drawer组件,该项目是用来练手的,代码比较冗余
import 'package:flutter/material.dart';
import 'tabs/Home.dart';
import 'tabs/Category.dart';
import 'tabs/Setting.dart';
class Tabs extends StatefulWidget {
final index;
Tabs({Key key, this.index = 0}) : super(key: key);
@override
_TabsState createState() => _TabsState(this.index);
}
class _TabsState extends State<Tabs> {
int _currentIndex = 0;
_TabsState(index) {
this._currentIndex = index;
}
// 把页面存放到数组里
List _pageList = [
HomePage(),
CategoryPage(),
SettingPage(),
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('首页'),
),
body: this._pageList[this._currentIndex],
bottomNavigationBar: BottomNavigationBar(
// 默认选中第几项
currentIndex: this._currentIndex,
// 导航栏点击获取索引值
onTap: (int index) {
setState(() {
this._currentIndex = index;
});
},
// iconSize: 30.0, //icon的大小
fixedColor: Colors.red, //选中的颜色
type: BottomNavigationBarType.fixed, //配置底部tabs可以有多个按钮
//定义导航栏的图片+名称
items: [
BottomNavigationBarItem(icon: Icon(Icons.home), title: Text("首页")),
BottomNavigationBarItem(
icon: Icon(Icons.category), title: Text("分类")),
BottomNavigationBarItem(
icon: Icon(Icons.settings), title: Text("设置")),
],
),
// 这里是核心代码
drawer: Drawer(
child: Column(
children: <Widget>[
Row(
children: <Widget>[
Expanded(
child: UserAccountsDrawerHeader(
accountName: Text("任我行RQ"),
accountEmail: Text("www.1342134929@qq.com"),
currentAccountPicture: CircleAvatar(
backgroundImage: NetworkImage(
"http://sucai.suoluomei.cn/sucai_zs/images/20200226173152-1.jpg"),
),
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(
"http://sucai.suoluomei.cn/sucai_zs/images/20200226173152-1.jpg"),
fit: BoxFit.cover,
)),
))
],
),
ListTile(
leading: CircleAvatar(
child: Icon(Icons.home),
),
title: Text("我的空间"),
onTap: () {
Navigator.of(context).pop(); //隐藏侧边栏
Navigator.pushNamed(context, '/NavBar'); //路由的跳转
},
),
Divider(),
ListTile(
leading: CircleAvatar(
child: Icon(Icons.people),
),
title: Text("用户中心"),
),
Divider(),
ListTile(
leading: CircleAvatar(
child: Icon(Icons.settings),
),
title: Text("设置中心"),
),
],
),
),
);
}
}
- 使用贝叶斯做英文拼写检查(c#)
- 贝叶斯文本分类c#版
- weex里Vuex state使用storage持久化
- 网络字体@font-face 如何处理网页中的特殊字体
- python实现多变量线性回归(Linear Regression with Multiple Variables)
- 【美团技术团队博客】序列化和反序列化
- Java 静态代理与动态代理
- ELK日志套件安装与使用
- HTML知识复习
- MarkDown 常用语法教程
- CSS3盒阴影 box-shadow
- HTML5-类库系列 补讲AJAX
- HTML5-类库系列 事件与获取完成版样式
- 为什么不要在 JavaScript 中使用位操作符?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PostgreSQL异常重启postmaster.pid处理
- Codeforce-Ozon Tech Challenge 2020-A. Kuroni and the Gifts
- 洛谷P3360偷天换日(树形DP)
- Java开发编程规范: 2.常量定义
- Codeforces Round #509 (Div. 2) A. Heist 贪心
- CodeForces - 1176A Divide it! (模拟+分类处理)
- Codeforces Round #460 (Div. 2)-A Supermaket(贪心)
- Codeforces Round #561 (Div. 2) A. Silent Classroom(贪心)
- codeforces 1287A -Angry Students(模拟)
- 洛谷 2016 战略游戏(树形DP)
- 洛谷2014 选课(树形DP)树形背包问题
- CF1288C-Two Arrays (DP)
- Java开发编程规范: 1.命名风格
- 图论——Tarjan 初步 DFS序+时间戳+欧拉序
- POJ 1330 Nearest Common Ancestors(裸LCA)