Flutter - 创建侧滑菜单(不使用navigatior,仅改变content)
之前写过一篇文章,Flutter - 创建横跨所有页面的侧滑菜单。这个里面中使用了Navigator.of(context).push来导航到新的页面。
这次介绍一种不使用导航,仅仅改变content即可。
这样做的好处是,不需要来回处理导航和路由那么个复杂的东西。
1. 准备工作
新建四个页面,Cart、JD、Taobiao、Settings。这里仅放一下Cart的代码,其他类似

import 'package:flutter/material.dart';
class Cart extends StatelessWidget{
@override
Widget build(BuildContext context){
return new Center(
child: Text('Cart'),
);
}
}
2. 添加页面引用
由于我放在了同级目录,仅作演示。所以引用如下
import './cart.dart';
import './settings.dart';
import './jd.dart';
import './taobiao.dart';
实际项目不建议这么操作,可以新建一个pages文件夹,放进去。
3. 新建一个空页面,并添加一个drawer,加入四个ListTile,分别是Cart、JD、Taobiao、Settings
void main() => runApp(new MaterialApp(
home: new NavDrawer(),
)); class NavDrawer extends StatefulWidget {
@override
_NavDrawerState createState() => new _NavDrawerState();
} class _NavDrawerState extends State<NavDrawer> {
@override
initState() {
super.initState();
} @override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(),
drawer: new Drawer(
child: new ListView(
children: <Widget>[
new ListTile(
title: new Text("Cart"),
trailing: new Icon(Icons.local_florist),
),
new ListTile(
title: new Text("JD"),
trailing: new Icon(Icons.desktop_windows),
),
new ListTile(
title: new Text("Taobiao"),
trailing: new Icon(Icons.table_chart),
),
new ListTile(
title: new Text("Settings"),
trailing: new Icon(Icons.settings),
)
],
),
),
body: new Container( ),
);
}
}
可以看到我们并没有添加onTap事件,还有Scaffold的body是空的,暂时没有设置。
4. 添加点击事件
这里仅演示Cart的点击代码,其他类似
onTap: () {
setState(() {
content = Cart();
Navigator.pop(context);
});
},
里面有一个Cart()赋值给了content,所以需要在类_NavDrawerState的最开始定义一下
dynamic content=Cart();
同时使用了setState方法,来通知框架content的值已改变。

5. 设置Scaffold的内容
body: new Container(
child: content,
),
6. 运行调试
Flutter - 创建侧滑菜单(不使用navigatior,仅改变content)的更多相关文章
- Flutter - 创建侧滑菜单
侧滑菜单在安卓App里面非常常见,比如Gmail,Google Play,Twitter等.看下图 网上也有很多创建侧滑菜单的教程,我也来记录一下,自己学习创建Drawer的过程. 1. 创建一个空的 ...
- Flutter - 左右侧滑菜单:drawer和endDrawer
侧滑菜单可以从左面滑出,也可以从右面滑出.在Scaffold中有drawer和endDrawer两个参数,分别对应左边的菜单和右边的菜单. drawer: new Drawer( child: new ...
- Flutter - 创建横跨所有页面的侧滑菜单
前一篇博客讲到了如何创建侧滑菜单,但是再实际使用过程中,会发现,这个策划菜单只能在首页侧滑出来. 当导航到其他页面后,侧滑就不管用了.这也有点不符合良好的用户体验设计.Google Play就是很好的 ...
- Android 自定义View修炼-打造完美的自定义侧滑菜单/侧滑View控件
一.概述 在App中,经常会出现侧滑菜单,侧滑滑出View等效果,虽然说Android有很多第三方开源库,但是实际上 咱们可以自己也写一个自定义的侧滑View控件,其实不难,主要涉及到以下几个要点: ...
- AndroidUI 侧滑菜单 DrawerLayout的使用
直接上代码: activity_main.xml: <android.support.v4.widget.DrawerLayout xmlns:android="http://sche ...
- Android 打造完美的侧滑菜单/侧滑View控件
概述 Android 打造完美的侧滑菜单/侧滑View控件,完全自定义实现,支持左右两个方向弹出,代码高度简洁流畅,兼容性高,控件实用方便. 详细 代码下载:http://www.demodashi. ...
- Android_侧滑菜单的实现
1.创建侧滑菜单Fragment package com.example.didida_corder; import android.os.Bundle; import android.view.La ...
- Flutter - 创建底部导航栏
之前写过的一篇文章介绍了 Flutter - 创建横跨所有页面的侧滑菜单, 这次就一起来学习一下底部导航栏. 底部导航栏在ios平台上非常常见,app store就是这样的风格.还有就是大家最常用的微 ...
- Android 高大上的侧滑菜单DrawerLayout,解决了不能全屏滑动的问题
DrawerLayout预览 DrawerLayout主要功能就是 实现侧滑菜单效果的功能,并且可以通过增加一些设置来实现高大上的效果,那么就请看动态图: 注意左上角那个图标,有木有很好玩,哈哈. ...
随机推荐
- pycharm的常用快捷键
使用pycharm写代码时,如果有错误,一般代码右边会有红色标记. 1,写代码时忘记导入模块,可以使用快捷键 Alt + Enter 自动导入模块.() 再倒入模块之前,需要现在pycharm ...
- Nginx服务器报 "Too Many Open Files"
近日服务器上的运行的一个站点经常性出现500错误.查了下服务器负载,负载正常.而后查询了下nginx记录的站点运行错误日志,发现提示Too many open files.因为站点静态文件居多,而且h ...
- Python3部分Print输出格式
print("Hello World!") #直接打印字符串 print('Hello World!') #对于python,单引号也可以表示字符串 name = 'Tom' #自 ...
- MySQL锁(行锁、表锁、页锁、乐观锁、悲观锁等)
锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具.在计算机中,是协调多个进程或县城并发访问某一资源的一种机制.在数据库当中,除了传统的计算资源(CPU.RAM.I/O等等)的争用之外,数据也是一 ...
- Python通过Zabbix API获得数据
Zabbix API查询:https://www.zabbix.com/documentation/2.0/manual/appendix/api/api import json,urllib2 fr ...
- javascript 正则表达式的使用
1. 语法 有两种定义正则表达式的方式 字面量形式 var expression = /pattern/flags 引用 MDN 的解释: pattern:正则表达式的文本. flags:标志,可以是 ...
- Python中日期时间案例演示
案例:准备10个人姓名,然后为这10个人随机生成生日[都是90后] 1.统计出那些人是夏季[6月-8月]出生的. 2.最大的比最小的大多少天 3.谁的生日最早,谁的生日最晚 备注:春季[3-5]夏季[ ...
- apache 虚拟主机及phpmyadmin 配置
NameVirtualHost *:80 <VirtualHost *:80> ServerName www.ly.comDocumentRoot E:/mywww </Virtua ...
- splay专题复习——bzoj 3224 & 1862 & 1503 题解
[前言]快要省选二试了.上次去被虐出翔了~~这次即便是打酱油.也要打出风採! 于是暂停新东西的学习,然后開始复习曾经的知识.为骗分做准备.PS:区间翻转的临时跳过,就算学了也来不及巩固了. [BZOJ ...
- Android常见UI组件之ListView(一)
使用ListView显示一个长的项列表 1.新建一个名为"BasicView5"的Android项目. 2.改动BasicView5.java文件.改动后的程序例如以下: pack ...