我要编写2个按钮:第一个打开Drawer
,第二个打开endDrawer
。
我使用的第一个按钮
onTap: () => _drawerKey.currentState.openEndDrawer(),
我使用的第二个
onTap: () => _drawerKey.currentState.openDrawer(),
但是代码不起作用
制作脚手架的全局密钥并将其放入脚手架中……
class _AppState extends State<MyHome> {
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
appBar: PreferredSize(
preferredSize: Size(null, 180),
child: _getAppBar(
_selectedDrawerIndex), //CustomAppBar(_scaffoldKey, controller),
),
drawer: createDrwaer(),
body: WillPopScope(
child: _getDrawerFragment(_selectedDrawerIndex),
onWillPop: () {
if (_selectedDrawerIndex == 1) {
_onSelectItem(0);
} else {
Navigator.of(context).pop();
}
},
) //_getDrawerFragment(_selectedDrawerIndex),
);
}
}
在点击按钮后使用此按钮...
onTap: () =>_scaffoldKey.currentState.openDrawer(),
请确保您的班级有状态
尝试此代码,
class Act_Drawer extends StatefulWidget {
@override
_Act_DrawerState createState() => _Act_DrawerState();
}
class _Act_DrawerState extends State<Act_Drawer> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Drawer Demo"),
automaticallyImplyLeading: false,
leading: StatefulBuilder(
builder: (BuildContext context, setState) {
return IconButton(
icon: Icon(Icons.format_align_left),
onPressed: () {
Scaffold.of(context).openDrawer();
},
);
},
),
actions: <Widget>[
StatefulBuilder(builder: (BuildContext context, setState) {
return IconButton(
icon: Icon(Icons.format_align_right),
onPressed: () {
Scaffold.of(context).openEndDrawer();
},
);
},
)
],
),
drawer: Drawer(),
endDrawer: Drawer(),
body: Container(),
);
}
}