Sobes.tech
Junior — Middle

Puteți explica conceptul și caracteristicile principale ale Navigatior 2.0?

sobes.tech AI

Răspuns de la AI

Navigator 2.0 în Flutter este un nou sistem de navigație care oferă un control mai mare asupra rutării și stării de navigație comparativ cu Navigator 1.0 clasic.

Caracteristicile principale ale Navigator 2.0:

  • Abordare declarativă: în loc să apelați metodele push/pop, descrieți starea actuală de navigație printr-o listă de pagini.
  • Suport pentru URL și deep linking: se poate sincroniza starea de navigație cu URL-ul, ceea ce este important pentru aplicațiile web.
  • Flexibilitate: permite implementarea scenariilor complexe de navigație, cum ar fi stive de navigare imbricate.
  • RouterDelegate și RouteInformationParser: clase cheie pentru gestionarea navigației și parsarea URL-urilor.

Exemplu de utilizare simplificată a 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;
  }
}

Astfel, Navigator 2.0 permite un control mai bun al navigației și integrarea acesteia cu surse externe, precum URL-ul browser-ului.