Schede con una barra di navigazione
Fa parte della sezione Elenchi e schermate del percorso Flutter di Coddy. Lezione 23 di 33.
Molte app organizzano le pagine principali in schede nella parte inferiore dello schermo. NavigationBar le disegna; la passi a Scaffold tramite bottomNavigationBar:.
NavigationBar(
selectedIndex: index,
onDestinationSelected: (int i) {
setState(() {
index = i;
});
},
destinations: const [
NavigationDestination(icon: Icon(Icons.home), label: 'Home'),
NavigationDestination(icon: Icon(Icons.settings), label: 'Settings'),
],
)Ogni NavigationDestination è una scheda, con un'icona e un'etichetta. selectedIndex indica quale scheda è evidenziata, contando da 0. Quando tocchi una scheda, onDestinationSelected riceve il suo indice.
La barra non memorizza da sola la scheda: mantieni index nel tuo stato e lo modifichi con setState. Il corpo mostra la pagina corrispondente a quell'indice, qui pages[index] da un elenco di widget.
Sfida
FacileLa barra ha tre schede, ma toccarle non produce alcun effetto. Aggiungi onDestinationSelected: in modo che la scheda toccata venga evidenziata e venga mostrata la relativa pagina: Favorites page per Favorites, Settings page per Settings.
Provalo tu
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> {
int index = 0;
final List<Widget> pages = const [
Center(child: Text('Home page')),
Center(child: Text('Favorites page')),
Center(child: Text('Settings page')),
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('My App')),
body: pages[index],
bottomNavigationBar: NavigationBar(
selectedIndex: index,
destinations: const [
NavigationDestination(icon: Icon(Icons.home), label: 'Home'),
NavigationDestination(icon: Icon(Icons.favorite), label: 'Favorites'),
NavigationDestination(icon: Icon(Icons.settings), label: 'Settings'),
],
),
);
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Elenchi e schermate
1Elenchi scorrevoli
Un elenco scorrevoleElementi dell’elencoInizio e fineTocca un elemento dell’elencoSeparare le righe6Schede, cassetti e scorrimenti
Schede con una barra di navigazioneIcone piene per la scheda apertaUn cassetto lateraleScorri per eliminareAnnullare uno scorrimentoEsercitati da solo: Compilatore Flutter online