| // Copyright 2014 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| import 'package:flutter/material.dart'; | |
| /// Flutter code sample for [Drawer]. | |
| void main() => runApp(const DrawerApp()); | |
| class DrawerApp extends StatelessWidget { | |
| const DrawerApp({super.key}); | |
| @override | |
| Widget build(BuildContext context) { | |
| return const MaterialApp(home: DrawerExample()); | |
| } | |
| } | |
| class DrawerExample extends StatefulWidget { | |
| const DrawerExample({super.key}); | |
| @override | |
| State<DrawerExample> createState() => _DrawerExampleState(); | |
| } | |
| class _DrawerExampleState extends State<DrawerExample> { | |
| String selectedPage = ''; | |
| @override | |
| Widget build(BuildContext context) { | |
| return Scaffold( | |
| appBar: AppBar(title: const Text('Drawer Example')), | |
| drawer: Drawer( | |
| child: ListView( | |
| padding: .zero, | |
| children: <Widget>[ | |
| const DrawerHeader( | |
| decoration: BoxDecoration(color: Colors.blue), | |
| child: Text( | |
| 'Drawer Header', | |
| style: TextStyle(color: Colors.white, fontSize: 24), | |
| ), | |
| ), | |
| ListTile( | |
| leading: const Icon(Icons.message), | |
| title: const Text('Messages'), | |
| onTap: () { | |
| setState(() { | |
| selectedPage = 'Messages'; | |
| }); | |
| }, | |
| ), | |
| ListTile( | |
| leading: const Icon(Icons.account_circle), | |
| title: const Text('Profile'), | |
| onTap: () { | |
| setState(() { | |
| selectedPage = 'Profile'; | |
| }); | |
| }, | |
| ), | |
| ListTile( | |
| leading: const Icon(Icons.settings), | |
| title: const Text('Settings'), | |
| onTap: () { | |
| setState(() { | |
| selectedPage = 'Settings'; | |
| }); | |
| }, | |
| ), | |
| ], | |
| ), | |
| ), | |
| body: Center(child: Text('Page: $selectedPage')), | |
| ); | |
| } | |
| } |