Strony jako dane, interfejs użytkownika realizowany za pomocą mechanizmu rozwiązywania.
W obiekcie PageEntry przechowuj tylko metadane. Użyj funkcji `buildPage`, aby przyporządkować każdy klucz strony do odpowiedniego elementu interfejsu użytkownika (widgetu).
Stan, który można serializować.
Obiekt PageEntry zawiera proste dane, co pozwala na rejestrowanie, porównywanie i odtwarzanie stanu nawigacji.
Prosty resolver.
Przełącznik na stronie "page.key" zapewnia, że wszystkie działania są rejestrowane i mogą być sprawdzane.
Jedno źródło informacji.
Funkcje "push" i "pop" to operacje na listach, a nie efekty uboczne.
Wzorzec rozwiązywania problemów.
Twórz strony na podstawie kluczy i modyfikuj listę stron w sposób deklaratywny.
Stan strony. Reguła.
Przykład użycia resolvera.
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')]);
}
Utrzymuj metadane w minimalistycznej formie.
Unikać umieszczania. Przekształcenie instancji widgetów w stan nawigacji. i zachowaj klasę PageEntry jako czyste metadane, aby zapewnić jej łatwość utrzymania.
Poprzedni.
Instalacja.Następny.
Nakładki.