Sobes.tech
Junior — Middle

Czy może Pan/Pani wyjaśnić koncepcję i główne cechy Navigatior 2.0?

sobes.tech AI

Odpowiedź od AI

Navigator 2.0 w Flutter to nowy system nawigacji, który zapewnia większą kontrolę nad trasowaniem i stanem nawigacji w porównaniu z klasycznym Navigator 1.0.

Główne cechy Navigator 2.0:

  • Podejście deklaratywne: zamiast wywoływać metody push/pop, opisujesz aktualny stan nawigacji za pomocą listy stron.
  • Wsparcie dla URL i deep linking: można synchronizować stan nawigacji z URL, co jest ważne dla aplikacji internetowych.
  • Elastyczność: umożliwia implementację złożonych scenariuszy nawigacji, np. zagnieżdżonych stosów nawigacyjnych.
  • RouterDelegate i RouteInformationParser: kluczowe klasy do zarządzania nawigacją i parsowania URL.

Przykład uproszczonego użycia 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;
  }
}

W ten sposób Navigator 2.0 pozwala na lepszą kontrolę nad nawigacją i jej integrację z zewnętrznymi źródłami, takimi jak URL przeglądarki.