I want to pass data from list_screen to tenancyDetailsScreen, but I stuck at the routes page.
list_screen.dart
Navigator.pushNamed(context, AppRoute.tenancyDetailsScreen,arguments:tenancy[index]);
app_route.dart
class AppRoute {
static const tenancyDetailsScreen = '/tenancyDetailsScreen';
static final _tenancyDetailsScreenRoute = Routes(tenancyDetailsScreen,TenancyDetailsScreen());
static Route? onGenerateRoutes(RouteSettings settings) {
if(settings.name == tenancyDetailsScreen){
final args = settings.arguments as Tenancy; // how to pass this args to DetailsScreen?
return _tenancyDetailsScreenRoute.materialRoute;
}
....
}
}
routes.dart
class Routes extends Equatable {
final String route;
final Widget page;
const Routes(this.route, this.page);
@override
List<Object> get props => [
route,
];
get materialRoute => MaterialPageRoute(
builder: (_) => SafeArea(child: page),
);
}
If you want to pass an arguments, you can't use custom Routes
.
static Route? onGenerateRoutes(RouteSettings settings) {
if(settings.name == tenancyDetailsScreen){
final args = settings.arguments as Tenancy; // how to pass this args to DetailsScreen?
return MaterialPageRoute(
builder: (_) => SafeArea(child: TenancyDetailsScreen(tenancy: args)),
);
}
....
}