在appbar更改抽屉的菜单图标

时间:2017-11-22 12:51:04

标签: flutter

如果您创建一个Scafold,则可以选择抽屉。如果您现在创建此抽屉,则会自动获得应用栏前导位置上的菜单图标。但我想在那里打开抽屉的另一个图标。我尝试在领先位置自己创建一个iconbutton但是这个按钮无法打开抽屉,即使“Scafold.of(context).openDrawer()”也无法打开它。

是否有替换抽屉按钮图标的选项?

3 个答案:

答案 0 :(得分:36)

Key中使用Scaffold并通过拨打myKey.currentState.openDrawer()来显示抽屉,这是一个正常工作的代码:

enter image description here

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