[Flutter]AppBarのアイコンからDrawerを開くには?

Flutter

どうも、ちょげ(@chogetarou)です。

AppBarのアイコンをタップしたときに、Drawerを開くには、どうしたら良いのでしょうか?

スポンサーリンク

方法

Drawerを開く方法は、2つあります。

ScaffoldKey

1つは、ScafoldKeyを使う方法です。

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        key: _scaffoldKey, //Keyの設定
        drawer: Drawer(),
        appBar: AppBar(
          leading: IconButton(
              onPressed: () {
                _scaffoldKey.currentState!.openDrawer(); //Drawerを開く
              },
              icon: Icon(Icons.settings)),
          title: Text('sample'),
        ),
        body: Center());
  }

ScaffoldKeyのopenDrawerメソッドを使うことによって、Drawerを開くことが出来ます。

Builder

もう1つは、Builderを使う方法です。

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        drawer: Drawer(),
        appBar: AppBar(
            leading: Builder(
                builder: (context) => IconButton(
                      icon: Icon(Icons.settings),
                      onPressed: () => Scaffold.of(context).openDrawer(),
                    )
            ),
            title: Text('sample')),
        body: Center());
  }

Builderクラスを使うことによって、Scaffoldに対して、openDrawerを呼び出せるようになります。

まとめ

AppBarのアイコンからDrawerを開くには、2つの方法があります。

  • ScaffoldKeyを使う方法
  • Builderを使う方法

どちらでも同じようにDrawerを開くことが出来ますので、好みで選んでください。

コメント

タイトルとURLをコピーしました