Open side drawer from custom button exist in a container

Viewed 1245

I want to open side drawer from a button exist in a container not from the AppBar side button. Also this should be open from right to left. For more information I have added screenshot of my requirement er

2 Answers

Here you have a basic sample:

@override
  Widget build(BuildContext context) {
    return Scaffold(
      endDrawer: Drawer(),
      appBar: AppBar(),
      body: Builder(
        builder: (context) {
          return Center(
            child: RaisedButton(
              child: Text("open drawer"),
              onPressed: () {
                Scaffold.of(context).openEndDrawer();
              },
            ),
          );
        },
      ),
    );
  }

Or you can use GlobalKey of ScaffoldState:


  GlobalKey<ScaffoldState> _key = new GlobalKey<ScaffoldState>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _key,
      endDrawer: Drawer(),
      appBar: AppBar(),
      body: Center(
        child: RaisedButton(
          child: Text("open drawer"),
          onPressed: () {
            _key.currentState.openEndDrawer();
          },
        ),
      ),
    );
  }
}

Check this link for more information : https://api.flutter.dev/flutter/material/ScaffoldState/openEndDrawer.html

create a scaffold key then give it your scaffold widget

GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();

then, to open drawer

_scaffoldKey.currentState.openDrawer()

or

_scaffoldKey.currentState.openEndDrawer()
Related