Sobes.tech
Back to questions
Junior — Middle
137

У вас есть практический опыт использования Navigator 2.0 для управления навигацией в приложениях Flutter?

Companies where asked
AndersenAndersen

Answer from AI

sobes.tech AI

Да, у меня есть практический опыт использования Navigator 2.0 в Flutter. Этот подход позволяет более гибко управлять навигацией, особенно в сложных приложениях с динамическими маршрутами и глубокими ссылками.

Navigator 2.0 основан на декларативном управлении состоянием навигации через Router и RouteInformationParser, что облегчает синхронизацию URL и состояния приложения.

Пример простого использования Navigator 2.0:

class MyRouterDelegate extends RouterDelegate<MyRoutePath> 
    with ChangeNotifier, PopNavigatorRouterDelegateMixin<MyRoutePath> {
  final GlobalKey<NavigatorState> navigatorKey;

  bool showDetails = false;

  MyRouterDelegate() : navigatorKey = GlobalKey<NavigatorState>();

  @override
  MyRoutePath get currentConfiguration =>
      showDetails ? MyRoutePath.details() : MyRoutePath.home();

  @override
  Widget build(BuildContext context) {
    return Navigator(
      key: navigatorKey,
      pages: [
        MaterialPage(child: HomeScreen(onTapped: () {
          showDetails = true;
          notifyListeners();
        })),
        if (showDetails) MaterialPage(child: DetailsScreen())
      ],
      onPopPage: (route, result) {
        if (!route.didPop()) return false;
        showDetails = false;
        notifyListeners();
        return true;
      },
    );
  }

  @override
  Future<void> setNewRoutePath(MyRoutePath path) async {
    showDetails = path.isDetailsPage;
  }
}

Такой подход позволяет легко управлять стеком страниц и поддерживать навигацию с учетом состояния приложения.