Flutter创建侧滑菜单技巧(不使用navigatior,仅改变content)
一种不使用导航,仅仅改变content即可。
这样做的好处是,不需要来回处理导航和路由那么个复杂的东西。
1. 准备工作
新建四个页面,Cart、JD、Taobiao、Settings。这里仅放一下Cart的代码,其他类似.

import 'package:flutter/';
class Cart extends StatelessWidget{
  @override
  Widget build(BuildContext context){
    returnnew Center(
      child: Text('Cart'),
    );
  }
}
2. 添加页面引用
由于我放在了同级目录,仅作演示。所以引用如下
import './'; import './'; import './'; import './';
实际项目不建议这么操作,可以新建一个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() {
    ();
  }
  @override
  Widget build(BuildContext context) {
    returnnew Scaffold(
      appBar: new AppBar(),
      drawer: new Drawer(
        child: new ListView(
          children: <Widget>[
            new ListTile(
              title: new Text("Cart"),
              trailing: new Icon(),
            ),
            new ListTile(
              title: new Text("JD"),
              trailing: new Icon(),
            ),
            new ListTile(
              title: new Text("Taobiao"),
              trailing: new Icon(),
            ),
            new ListTile(
              title: new Text("Settings"),
              trailing: new Icon(),
            )
          ],
        ),
      ),
      body: new Container(
      ),
    );
  }
}
可以看到我们并没有添加onTap事件,还有Scaffold的body是空的,暂时没有设置。
4. 添加点击事件
这里仅演示Cart的点击代码,其他类似
              onTap: () {
                setState(() {
                  content = Cart();
                  (context);
                });
              },
里面有一个Cart()赋值给了content,所以需要在类_NavDrawerState的最开始定义一下
同时使用了setState方法,来通知框架content的值已改变。

5. 设置Scaffold的内容
body: new Container(
        child: content,
      ),
6. 运行调试Flutter
        THE END
    
        
        






