Seiten als Daten, UI über den Resolver
Speichern Sie in PageEntry nur Metadaten. Verwenden Sie buildPage, um jeden Seitenkey einem echten Widget zuzuordnen.
Serialisierbarer Zustand
PageEntry sind reine Daten, daher kann der Navigationszustand protokolliert, verglichen und erneut abgespielt werden.
Einfacher Resolver
Ein switch auf page.key hält das Routing explizit und prüfbar.
Eine einzige Wahrheitsquelle
Push und pop sind Listenoperationen auf _pages, keine Seiteneffekte.
Resolver-Muster
Konstruieren Sie nach Seitenkey und verändern Sie die Seitenliste deklarativ.
Regel für den Seitenzustand
Resolver-Beispiel
Widget _buildPage(BuildContext context, PageEntry page) {
switch (page.key) {
case 'home':
return HomePage(onGoDetail: _goDetail);
case 'detail':
return const DetailPage();
default:
return const SizedBox.shrink();
}
}
void _goDetail() {
setState(() => _pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')]);
}
Metadaten schlank halten
Vermeiden Sie das Platzieren Widget-Instanzen in den Navigationszustand und halten Sie PageEntry zur Wartung als reine Metadaten.
Zurück
NutzungshandbuchWeiter
Resolver