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;
  }
}

Այսպիսով, Navigator 2.0-ը թույլ է տալիս ավելի լավ վերահսկողություն նավիգացիայի վրա և ինտեգրացիա՝ արտաքին աղբյուրների հետ, օրինակ՝ բրաուզերի URL-ով։