Sobes.tech
Junior — Middle

Navigatior 2.0 концепциясын жана негизги өзгөчөлүктөрүн түшүндүрө аласызбы?

sobes.tech AI

AIден жооп

Flutter-деги Navigator 2.0 — бул навигациянын жаңы системасы, ал классикалык 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;
  }
}

Бул ыкма навигацияны жакшыраак көзөмөлдөөгө жана аны браузердин URL сыяктуу тышкы булактар менен интеграциялоого мүмкүндүк берет.