$route<T extends GoRouteData> method
Null safety
A helper function used by generated code.
Should not be used directly.
Implementation
static GoRoute $route<T extends GoRouteData>({
required String path,
required T Function(GoRouterState) factory,
List<GoRoute> routes = const <GoRoute>[],
}) {
T factoryImpl(GoRouterState state) {
final Object? extra = state.extra;
// If the "extra" value is of type `T` then we know it's the source
// instance of `GoRouteData`, so it doesn't need to be recreated.
if (extra is T) {
return extra;
}
return (_stateObjectExpando[state] ??= factory(state)) as T;
}
Widget builder(BuildContext context, GoRouterState state) =>
factoryImpl(state).build(context);
Page<void> pageBuilder(BuildContext context, GoRouterState state) =>
factoryImpl(state).buildPageWithState(context, state);
FutureOr<String?> redirect(BuildContext context, GoRouterState state) =>
factoryImpl(state).redirect();
return GoRoute(
path: path,
builder: builder,
pageBuilder: pageBuilder,
redirect: redirect,
routes: routes,
);
}