Stack indipendenti per tab

DeclarativeTabsScaffold mantiene indipendente l'elenco di pagine di ogni tab, preservando gli aggiornamenti dichiarativi.

Elenchi di pagine locali al tab

Gestisci Map<TabId, List<PageEntry>> per uno stato di navigazione dei tab prevedibile.

Overlay per schermata

Usa TabPageKey = (TabId, pageKey) per delimitare lo stato dell'overlay per ogni schermata del tab.

Ordine di back coerente

Overlay -> pop del tab stack -> primo tab -> onBackAtRoot.

Pattern dello scaffold dei tab

Prepara le pagine root per ogni tab e instrada tutti gli eventi del tab attraverso aggiornamenti di stato.

Mappa overlay dei tab

DeclarativeTabsScaffold

const tabHome = TabId('home');
const tabSettings = TabId('settings');

final pagesByTab = <TabId, List<PageEntry>>{
  tabHome: [const PageEntry(key: 'home', name: '/home')],
  tabSettings: [const PageEntry(key: 'settings', name: '/settings')],
};

return DeclarativeTabsScaffold(
  items: items,
  currentTab: currentTab,
  onSelectTab: _selectTab,
  pagesByTab: pagesByTab,
  setPagesForTab: _setPagesForTab,
  buildPage: _buildTabPage,
);
Vincolo

Per ogni tab, pagesByTab[tab] deve rimanere non vuoto perché la pagina root è necessaria per un comportamento di navigazione stabile.

Precedente

Overlay