initialize method

Map<String, RouteSettingsWithChildAndData>? initialize()

Implementation

Map<String, RouteSettingsWithChildAndData>? initialize() {
  routePathResolver._initialPathParams.addAll(_routeData.pathParams);

  if (_routes.isEmpty) {
    route = routeNotDefinedAssertion;
    return null;
  }

  bool isNavigator2 = RouterObjects.rootDelegate != null;

  if (isNavigator2) {
    final GlobalKey<NavigatorState> key = GlobalKey<NavigatorState>();
    Map<String, RouteSettingsWithChildAndData>? pages;
    final transition =
        transitionsBuilder ?? navigateObject.transitionsBuilder;
    _routerDelegate = RouterDelegateImp(
      delegateName: _routeData._subLocation,
      key: key,
      builder: builder != null
          ? (route) {
              final r =
                  RouterObjects.navigationBuilder?.routeData ?? _routeData;
              return SubRoute._(
                key: ValueKey(r._subLocation),
                child: builder!(route),
                route: route,
                routeData: r,
                animation: null,
                shouldAnimate: true,
                lastSubRoute: null,
                transitionsBuilder: transition,
              );
            }
          : null,
      routes: _routes,
      resolvePathRouteUtil: routePathResolver,
      hasBuilder: _hasBuilder,
      transitionsBuilder: transition,
      transitionDuration: _Navigate._transitionDuration ??
          RouterObjects.rootDelegate!.transitionDuration,
      delegateImplyLeadingToParent: _delegateImplyLeadingToParent,
    );
    isInitialized[0] = true;
    _routeInformationParser =
        RouteInformationParserImp(_routerDelegate, (p) => pages = p);
    _routeInformationParser._parseRouteInformation(
      RouteInformation(uri: Uri.parse(_path), state: {
        'routeData': _routeData,
        'skipHomeSlash': _parentToSubRouteMessage.skipHomeSlash,
        'queryParams': _parentToSubRouteMessage.queryParams
      }),
    );
    if (pages == null) {
      return null;
    }
    final c = pages!.values.last.child;
    _routeDataList[0] = pages!.values.last.routeData;
    if (!pages!.keys.last.startsWith(routeLocation)) {
      return pages;
    }
    final r = pages!.values.last.rData?.redirectedFrom?.location
            .split('/')
            .length ??
        0;
    final k = pages!.keys.last.split('/').length;
    if (r > k) {
      return pages;
    }
    if (c is! RouteWidget ||
            c._path.startsWith(
                _path) /*||
        routeLocation == '/' && c.routeLocation != routeLocation*/
        ) {
      route = c!;
      return {};
    } else {
      return pages;
    }
  } else {
    _resolve();
    return {};
  }
}