Sobes.tech
Junior — Middle

Ar galite paaiškinti Navigatior 2.0 koncepciją ir pagrindines savybes?

sobes.tech AI

Atsakymas iš AI

Navigator 2.0 Flutter'e yra nauja navigacijos sistema, kuri suteikia daugiau kontrolės maršrutizavimui ir navigacijos būsenai, palyginti su klasikiniu Navigator 1.0.

Pagrindinės Navigator 2.0 savybės:

  • Deklaratyvus požiūris: vietoj push/pop metodų kvietimo aprašote esamą navigacijos būseną per puslapių sąrašą.
  • URL ir deep linking palaikymas: galima sinchronizuoti navigacijos būseną su URL, kas yra svarbu internetinėms programėlėms.
  • Lankstumas: leidžia įgyvendinti sudėtingus navigacijos scenarijus, pvz., įdėtus navigacijos sąstatus.
  • RouterDelegate ir RouteInformationParser: pagrindinės klasės navigacijai valdyti ir URL analizei.

Pavyzdys supaprastintam Navigator 2.0 naudojimui:

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()),
        jei (_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;
  }
}

Šiuo būdu Navigator 2.0 leidžia geriau kontroliuoti navigaciją ir ją integruoti su išoriniais šaltiniais, pvz., naršyklės URL.