Sobes.tech
Back to questions
Junior — Middle
80

Можете объяснить концепцию и основные особенности Navigatior 2.0?

Companies where asked
HamkorBank

Answer from AI

sobes.tech AI

Navigator 2.0 в Flutter — это новая система навигации, которая даёт больше контроля над маршрутизацией и состоянием навигации по сравнению с классическим Navigator 1.0.

Основные особенности Navigator 2.0:

  • Декларативный подход: вместо вызова методов push/pop вы описываете текущее состояние навигации через список страниц.
  • Поддержка URL и deep linking: можно синхронизировать состояние навигации с URL, что важно для веб-приложений.
  • Гибкость: позволяет реализовывать сложные сценарии навигации, например, вложенные навигационные стеки.
  • RouterDelegate и RouteInformationParser: ключевые классы для управления навигацией и парсинга URL.

Пример упрощённого использования 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;
  }
}

Таким образом, Navigator 2.0 позволяет лучше контролировать навигацию и интегрировать её с внешними источниками, например, URL браузера.