Sobes.tech
Junior — Middle

Можете ли објаснити концепт и главне особине Navigatior 2.0?

sobes.tech АИ

Одговор од АИ

Navigator 2.0 u Flutter-u je novi sistem navigacije koji pruža veću kontrolu nad rutiranjem i stanjem navigacije u poređenju sa klasičnim Navigator 1.0.

Glavne karakteristike Navigator 2.0:

  • Deklarativni pristup: umesto pozivanja push/pop metoda, opisujete trenutno stanje navigacije putem liste stranica.
  • Podrška za URL i deep linking: možete sinhronizovati stanje navigacije sa URL-om, što je važno za web aplikacije.
  • Fleksibilnost: omogućava implementaciju složenih scenarija navigacije, poput ugnježdenih stekova navigacije.
  • RouterDelegate i RouteInformationParser: ključne klase za upravljanje navigacijom i parsiranje URL-ova.

Primer pojednostavljenog korišćenja 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;
  }
}

Na ovaj način, Navigator 2.0 omogućava bolju kontrolu nad navigacijom i njenu integraciju sa spoljnim izvorima, poput URL-a pretraživača.