在网上好多方法 但是有些点没有讲到
简单的说就是在 Scaffold 添加 Drawer
var _scaffoldkey = new GlobalKey<ScaffoldState>();//将Scaffold设置为全局变量
@override
Widget build(BuildContext context) {
// TODO: implement build
Drawer drawer = Drawer(
child: ListView(
children: [Text("1"), Text("1"), Text("1"), Text("1"), Text("1"), Text("1")],
),
);
return Scaffold(
key: _scaffoldkey,
drawer: drawer,
appBar: AppBarUtil.getAppBar("头标题", method: (a) {
if (a == 1) {
//左边按钮
openDrawer();
return;
}
//右边按钮
}),
);
}
void openDrawer(){
//通过全局变量打开侧边栏
//避免出现Scaffold.of() called with a context that does not contain a Scaffold的情况
_scaffoldkey.currentState.openDrawer();
}
这个AppBarUtil.getAppBar 是我自己创建的方法 当初因为自定义的按钮所以找了一些时间怎么打开和关闭
在主页面中
打开 Scaffold.of(context).openDrawer();
关闭 Navigator.pop(context)
不过如果不是自定义 的appBar 应该直接就会显示不会出现需要调用打开方法的情况
也可以右边侧边栏
把drawer改成endDrawer就行了