Sobes.tech
Junior — Middle

Può spiegare il concetto e le caratteristiche principali di Navigatior 2.0?

sobes.tech AI

Risposta dell'AI

Navigator 2.0 in Flutter è un nuovo sistema di navigazione che offre un maggiore controllo sul routing e sullo stato di navigazione rispetto al classico Navigator 1.0.

Caratteristiche principali di Navigator 2.0:

  • Approccio dichiarativo: invece di chiamare metodi push/pop, descrivi lo stato attuale della navigazione tramite una lista di pagine.
  • Supporto per URL e deep linking: è possibile sincronizzare lo stato di navigazione con l'URL, importante per le applicazioni web.
  • Flessibilità: permette di implementare scenari di navigazione complessi, come stack di navigazione annidati.
  • RouterDelegate e RouteInformationParser: classi chiave per gestire la navigazione e analizzare gli URL.

Esempio di utilizzo semplificato di Navigator 2.0:

class MyRouterDelegate extends RouterDelegate<MyRoutePath> with ChangeNotifier, PopNavigatorRouterDelegateMixin<MyRoutePath> {
  final GlobalKey<NavigatorState> navigatorKey;

  MyRouterDelegate() : navigatorKey = GlobalKey<NavigatorState>();

  MyRoutePath _currentPath;

  @override
  Widget build(BuildContext context) {
    return Navigator(
      key: navigatorKey,
      pages: [
        MaterialPage(child: HomeScreen()),
        if (_currentPath.isDetailsPage) MaterialPage(child: DetailsScreen()),
      ],
      onPopPage: (route, result) {
        if (!route.didPop(result)) return false;
        _currentPath = MyRoutePath.home();
        notifyListeners();
        return true;
      },
    );
  }

  @override
  Future<void> setNewRoutePath(MyRoutePath path) async {
    _currentPath = path;
  }
}

In questo modo, Navigator 2.0 permette un migliore controllo sulla navigazione e la sua integrazione con fonti esterne, come l'URL del browser.