Sobes.tech
Junior — Middle

Meg tudná magyarázni a Navigatior 2.0 koncepcióját és fő jellemzőit?

sobes.tech MI

Válasz az MI-től

A Navigator 2.0 a Flutterben egy új navigációs rendszer, amely nagyobb kontrollt biztosít az útvonalválasztás és a navigációs állapot felett a klasszikus Navigator 1.0-hoz képest.

A Navigator 2.0 fő jellemzői:

  • Deklaratív megközelítés: a push/pop metódusok hívása helyett a navigáció aktuális állapotát egy oldallistán keresztül írja le.
  • URL és deep linking támogatás: lehetőség van a navigáció állapotának szinkronizálására az URL-lel, ami fontos webes alkalmazásoknál.
  • Rugalmasság: lehetővé teszi összetett navigációs forgatókönyvek, például beágyazott navigációs veremek megvalósítását.
  • RouterDelegate és RouteInformationParser: kulcsosztályok a navigáció kezeléséhez és az URL-ek elemzéséhez.

Egyszerűsített Navigator 2.0 használati példa:

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;
  }
}

Ezáltal a Navigator 2.0 jobb kontrollt tesz lehetővé a navigáció felett, és integrálható külső forrásokkal, például a böngésző URL-jével.