Antimodelli da evitare

La maggior parte dei bug si verifica quando si mescolano i modelli imperativo e dichiarativo. Mantieni un confine rigoroso dello stato.

Mescolare push/pop con le pagine

Non chiamare `Navigator.push`/`pop` per stack già gestiti da `List<PageEntry>`.

Widget nello stato

Non inserire istanze `Widget` nei metadati della pagina. Conserva solo chiavi e identificatori simili a route.

Chiavi senza limite

Non riutilizzare valori duplicati di `PageEntry.key` nello stesso stack.

Checklist di migrazione

Usa questa checklist durante le revisioni di refactoring per mantenere coerente l'architettura.

Checklist

Giusto vs sbagliato

// Sbagliato: mescolare approccio imperativo e dichiarativo per lo stesso stack
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];

// Giusto: aggiorna solo lo stato dichiarativo
setState(() {
  _pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
Suggerimento per la revisione

Durante la revisione del codice, traccia chi possiede le modifiche dello stack e rifiuta le modifiche che alterano lo stesso stack tramite più API.

Successivo

Introduzione