Σελίδες ως δεδομένα, UI μέσω Resolver

Αποθηκεύστε μόνο μεταδεδομένα στο PageEntry. Χρησιμοποιήστε το buildPage για να αντιστοιχίσετε κάθε κλειδί σελίδας σε πραγματικό widget.

Σειριοποιήσιμη κατάσταση

Το PageEntry είναι απλά δεδομένα, οπότε η κατάσταση πλοήγησης μπορεί να καταγράφεται, να συγκρίνεται και να επαναλαμβάνεται.

Απλός resolver

Ένα switch στο page.key κρατά τη δρομολόγηση ρητή και εύκολη στον έλεγχο.

Μία πηγή αλήθειας

Τα push και pop είναι λειτουργίες λίστας στο _pages, όχι παρενέργειες.

Μοτίβο Resolver

Κάντε build με βάση το κλειδί σελίδας και τροποποιήστε τη λίστα σελίδων δηλωτικά.

Κανόνας κατάστασης σελίδας

Παράδειγμα Resolver

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')]);
}
Κρατήστε τα μεταδεδομένα λιτά

Αποφύγετε να τοποθετείτε instances Widget μέσα στην κατάσταση πλοήγησης και διατηρήστε το PageEntry ως καθαρά μεταδεδομένα για καλύτερη συντηρησιμότητα.

Προηγούμενο

Εγκατάσταση