Flutter Drawerをタップで閉じるサンプル

環境
Windows11 pro 64bit
Flutter 3.3.7

概要
Drawerをタップで閉じるには、Navigator.pop(context)を使います。
構文

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
TextButton(
onPressed: () {
Navigator.pop(context); //Drawerを閉じる
},
child: Text('Close'),
)
TextButton( onPressed: () { Navigator.pop(context); //Drawerを閉じる }, child: Text('Close'), )
TextButton(
  onPressed: () {
    Navigator.pop(context); //Drawerを閉じる
  },
  child: Text('Close'),
)

ウェジェットの引数などでタップイベントを追加します。
タップイベントの処理で、Navigator.pop(context)を呼び出します。

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
appBar: AppBar(),
drawer: Drawer(
child: ListView(
children: [
DrawerHeader(
child: Container(
color: Colors.green,
child: Text('Healder'),
alignment: Alignment.center,
),
),
ListTile(
title: const Text('項目1'),
),
ListTile(
title: const Text('項目2'),
),
TextButton(
onPressed: () {
Navigator.pop(context);
},
child: Text('閉じる'),
)
],
),
),
),
);
}
@override Widget build(BuildContext context) { return SafeArea( child: Scaffold( appBar: AppBar(), drawer: Drawer( child: ListView( children: [ DrawerHeader( child: Container( color: Colors.green, child: Text('Healder'), alignment: Alignment.center, ), ), ListTile( title: const Text('項目1'), ), ListTile( title: const Text('項目2'), ), TextButton( onPressed: () { Navigator.pop(context); }, child: Text('閉じる'), ) ], ), ), ), ); }
@override
Widget build(BuildContext context) {
  return SafeArea(
    child: Scaffold(
      appBar: AppBar(),
      drawer: Drawer(
        child: ListView(
          children: [
            DrawerHeader(
              child: Container(
                color: Colors.green,
                child: Text('Healder'),
                alignment: Alignment.center,
              ),
            ),
            ListTile(
              title: const Text('項目1'),
            ),
            ListTile(
              title: const Text('項目2'),
            ),
            TextButton(
              onPressed: () {
                Navigator.pop(context);
              },
              child: Text('閉じる'),
            )
          ],
        ),
      ),
    ),
  );
}

 

Flutter

Posted by arkgame