Uma gaveta lateral
Parte da seção Listas e telas do Journey de Flutter da Coddy. Lição 25 de 33.
Um Drawer é um painel que desliza pela lateral, para as seções do app que não cabem nas abas. Adicione-o ao Scaffold:
Scaffold(
appBar: AppBar(title: Text(folder)),
drawer: Drawer(
child: ListView(
children: [
const DrawerHeader(child: Text('Mail')),
ListTile(
title: const Text('Sent'),
onTap: () {
setState(() {
folder = 'Sent';
});
Navigator.pop(context);
},
),
],
),
),
)Com um drawer, a barra do app mostra um botão de menu com três linhas no início. Toque nele ou deslize a partir da borda para abrir o drawer.
O drawer permanece aberto até que algo o feche. Um drawer aberto é como uma tela sobre a página, então Navigator.pop(context) o fecha. Chame-o depois que uma linha for tocada, caso contrário, o drawer cobrirá a página escolhida.
Um DrawerHeader é a área grande na parte superior, destinada ao nome do app ou à conta conectada.
Desafio
FácilAbra a gaveta com o botão de menu: ela contém apenas a Inbox. Adicione mais duas linhas como a linha da Inbox, cada uma definindo folder e fechando a gaveta:
Sent, comIcons.sendTrash, comIcons.delete
Experimente você mesmo
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
const HomeScreen({super.key});
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
String folder = 'Inbox';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(folder)),
body: Center(
child: Text('No messages in $folder'),
),
drawer: Drawer(
child: ListView(
children: [
const DrawerHeader(
child: Text('Mail', style: TextStyle(fontSize: 24)),
),
ListTile(
leading: const Icon(Icons.inbox),
title: const Text('Inbox'),
onTap: () {
setState(() {
folder = 'Inbox';
});
Navigator.pop(context);
},
),
],
),
),
);
}
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Listas e telas
1Listas roláveis
Uma lista que rolaItens da listaInício e fimToque em um item da listaDivisórias entre linhas6Abas, Gavetas e Deslizes
Abas com uma barra de navegaçãoÍcones preenchidos para a aba abertaUma gaveta lateralDeslize para excluirDesfaça um deslizePratique por conta própria: Compilador de Flutter online