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