Для этого можно использовать следующие методы:
-
Использование виджетов Scaffold и Drawer:
import 'package:flutter/material.dart'; class MyHomePage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('My App'), ), drawer: Drawer( child: ListView( children: <Widget>[ ListTile( title: Text('Item 1'), onTap: () { // Handle item 1 being tapped }, ), ListTile( title: Text('Item 2'), onTap: () { // Handle item 2 being tapped }, ), ], ), ), body: Center( child: Text('Home Page'), ), ); } } -
Использование GlobalKey и ScaffoldState:
import 'package:flutter/material.dart'; class MyHomePage extends StatelessWidget { final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>(); void _openDrawer() { _scaffoldKey.currentState?.openDrawer(); } @override Widget build(BuildContext context) { return Scaffold( key: _scaffoldKey, appBar: AppBar( title: Text('My App'), ), body: Center( child: RaisedButton( onPressed: _openDrawer, child: Text('Open Drawer'), ), ), drawer: Drawer( child: ListView( children: <Widget>[ ListTile( title: Text('Item 1'), onTap: () { // Handle item 1 being tapped }, ), ListTile( title: Text('Item 2'), onTap: () { // Handle item 2 being tapped }, ), ], ), ), ); } }
Это два распространенных способа открыть ящик в каркасе Flutter. Первый метод использует встроенное свойство drawerвиджета Scaffold, а второй метод использует GlobalKey и ScaffoldState для программного открытия ящика.