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.