如果您创建一个Scafold,则可以选择抽屉。如果您现在创建此抽屉,则会自动获得应用栏前导位置上的菜单图标。但我想在那里打开抽屉的另一个图标。我尝试在领先位置自己创建一个iconbutton但是这个按钮无法打开抽屉,即使“Scafold.of(context).openDrawer()”也无法打开它。
是否有替换抽屉按钮图标的选项?
答案 0 :(得分:36)
在Key
中使用Scaffold
并通过拨打myKey.currentState.openDrawer()
来显示抽屉,这是一个正常工作的代码:
import "package:flutter/material.dart";
class Test extends StatefulWidget {
@override
_TestState createState() => new _TestState();
}
class _TestState extends State<Test> {
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
return new Scaffold(
key: _scaffoldKey,
drawer: new Drawer(),
appBar: new AppBar(
leading: new IconButton(icon: new Icon(Icons.settings),
onPressed: () => _scaffoldKey.currentState.openDrawer()),
),
);
}
}
答案 1 :(得分:11)
替代接受的答案,不需要GlobalKey
:
class _TestState extends State<Test> {
@override
Widget build(BuildContext context) {
return new Scaffold(
drawer: new Drawer(),
appBar: new AppBar(
leading: Builder(
builder: (context) => IconButton(
icon: new Icon(Icons.settings),
onPressed: () => Scaffold.of(context).openDrawer(),
),
),
),
);
}
}
答案 2 :(得分:0)
您需要初始化1
2
3
4
5
Hello
6
7
Ola
8
9
10
Hello
Hi
11
...
之后,
打开抽屉并关闭抽屉
scaffoldKey