Search code examples
flutterflutter-drawer

Open drawer on clicking AppBar


If you create an Scaffold there is an option for a Drawer. If you now create this drawer you get automatically the menu icon on the leading position of the Appbar. But I want another icon there to open the drawer. I tried to make an iconButton myself on the leading position, but this button can't open the drawer even with Scaffold.of(context).openDrawer().

Is there any option to replace the icon for the drawer button?


Solution

  • Use a Key in your Scaffold and show the drawer by calling myKey.currentState.openDrawer(), here is a working code:

    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(),
            ),
          ),
        );
      }
    }