generator method
method's output should be passed to MaterialApp.onGenerateRoute or CupertinoApp.onGenerateRoute
Implementation
RouteFactory generator(
{VoyagerRouteType routeType = VoyagerRouteType.material}) {
return (RouteSettings settings) {
final path = settings.name!;
final builder = (BuildContext context) {
var isWrappedWithRouter = false;
// If App is not wrapped with RouterProvider we use
// the current instance. this breaks hot reload until page
// is off the stack as PageRoute will hold old router
// reference
try {
isWrappedWithRouter =
Provider.of<VoyagerRouter?>(context, listen: false) != null;
} catch (_) {}
dynamic argument;
if (settings.arguments != null) {
if (settings.arguments is VoyagerArgument) {
argument = settings.arguments;
} else {
argument = VoyagerArgument(settings.arguments);
}
}
return VoyagerWidget(
path: path,
router: isWrappedWithRouter ? null : this,
argument: argument);
};
switch (routeType) {
case VoyagerRouteType.material:
return MaterialPageRoute<dynamic>(
builder: builder, settings: settings);
case VoyagerRouteType.cupertino:
return CupertinoPageRoute<dynamic>(
builder: builder, settings: settings);
}
};
}