mirror of
https://github.com/flutter/samples.git
synced 2026-04-29 11:06:34 +00:00
Flutter 3.29 beta (#2571)
This commit is contained in:
@@ -25,72 +25,81 @@ import 'routes.dart';
|
||||
///
|
||||
/// Listens to changes in [AuthTokenRepository] to redirect the user
|
||||
/// to /login when the user logs out.
|
||||
GoRouter router(
|
||||
AuthRepository authRepository,
|
||||
) =>
|
||||
GoRouter(
|
||||
initialLocation: Routes.home,
|
||||
debugLogDiagnostics: true,
|
||||
redirect: _redirect,
|
||||
refreshListenable: authRepository,
|
||||
GoRouter router(AuthRepository authRepository) => GoRouter(
|
||||
initialLocation: Routes.home,
|
||||
debugLogDiagnostics: true,
|
||||
redirect: _redirect,
|
||||
refreshListenable: authRepository,
|
||||
routes: [
|
||||
GoRoute(
|
||||
path: Routes.login,
|
||||
builder: (context, state) {
|
||||
return LoginScreen(
|
||||
viewModel: LoginViewModel(authRepository: context.read()),
|
||||
);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: Routes.home,
|
||||
builder: (context, state) {
|
||||
final viewModel = HomeViewModel(
|
||||
bookingRepository: context.read(),
|
||||
userRepository: context.read(),
|
||||
);
|
||||
return HomeScreen(viewModel: viewModel);
|
||||
},
|
||||
routes: [
|
||||
GoRoute(
|
||||
path: Routes.login,
|
||||
path: Routes.searchRelative,
|
||||
builder: (context, state) {
|
||||
return LoginScreen(
|
||||
viewModel: LoginViewModel(
|
||||
authRepository: context.read(),
|
||||
),
|
||||
final viewModel = SearchFormViewModel(
|
||||
continentRepository: context.read(),
|
||||
itineraryConfigRepository: context.read(),
|
||||
);
|
||||
return SearchFormScreen(viewModel: viewModel);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: Routes.home,
|
||||
path: Routes.resultsRelative,
|
||||
builder: (context, state) {
|
||||
final viewModel = HomeViewModel(
|
||||
bookingRepository: context.read(),
|
||||
userRepository: context.read(),
|
||||
final viewModel = ResultsViewModel(
|
||||
destinationRepository: context.read(),
|
||||
itineraryConfigRepository: context.read(),
|
||||
);
|
||||
return HomeScreen(viewModel: viewModel);
|
||||
return ResultsScreen(viewModel: viewModel);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: Routes.activitiesRelative,
|
||||
builder: (context, state) {
|
||||
final viewModel = ActivitiesViewModel(
|
||||
activityRepository: context.read(),
|
||||
itineraryConfigRepository: context.read(),
|
||||
);
|
||||
return ActivitiesScreen(viewModel: viewModel);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: Routes.bookingRelative,
|
||||
builder: (context, state) {
|
||||
final viewModel = BookingViewModel(
|
||||
itineraryConfigRepository: context.read(),
|
||||
createBookingUseCase: context.read(),
|
||||
shareBookingUseCase: context.read(),
|
||||
bookingRepository: context.read(),
|
||||
);
|
||||
|
||||
// When opening the booking screen directly
|
||||
// create a new booking from the stored ItineraryConfig.
|
||||
viewModel.createBooking.execute();
|
||||
|
||||
return BookingScreen(viewModel: viewModel);
|
||||
},
|
||||
routes: [
|
||||
GoRoute(
|
||||
path: Routes.searchRelative,
|
||||
builder: (context, state) {
|
||||
final viewModel = SearchFormViewModel(
|
||||
continentRepository: context.read(),
|
||||
itineraryConfigRepository: context.read(),
|
||||
);
|
||||
return SearchFormScreen(viewModel: viewModel);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: Routes.resultsRelative,
|
||||
builder: (context, state) {
|
||||
final viewModel = ResultsViewModel(
|
||||
destinationRepository: context.read(),
|
||||
itineraryConfigRepository: context.read(),
|
||||
);
|
||||
return ResultsScreen(
|
||||
viewModel: viewModel,
|
||||
);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: Routes.activitiesRelative,
|
||||
builder: (context, state) {
|
||||
final viewModel = ActivitiesViewModel(
|
||||
activityRepository: context.read(),
|
||||
itineraryConfigRepository: context.read(),
|
||||
);
|
||||
return ActivitiesScreen(
|
||||
viewModel: viewModel,
|
||||
);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: Routes.bookingRelative,
|
||||
path: ':id',
|
||||
builder: (context, state) {
|
||||
final id = int.parse(state.pathParameters['id']!);
|
||||
final viewModel = BookingViewModel(
|
||||
itineraryConfigRepository: context.read(),
|
||||
createBookingUseCase: context.read(),
|
||||
@@ -98,41 +107,19 @@ GoRouter router(
|
||||
bookingRepository: context.read(),
|
||||
);
|
||||
|
||||
// When opening the booking screen directly
|
||||
// create a new booking from the stored ItineraryConfig.
|
||||
viewModel.createBooking.execute();
|
||||
// When opening the booking screen with an existing id
|
||||
// load and display that booking.
|
||||
viewModel.loadBooking.execute(id);
|
||||
|
||||
return BookingScreen(
|
||||
viewModel: viewModel,
|
||||
);
|
||||
return BookingScreen(viewModel: viewModel);
|
||||
},
|
||||
routes: [
|
||||
GoRoute(
|
||||
path: ':id',
|
||||
builder: (context, state) {
|
||||
final id = int.parse(state.pathParameters['id']!);
|
||||
final viewModel = BookingViewModel(
|
||||
itineraryConfigRepository: context.read(),
|
||||
createBookingUseCase: context.read(),
|
||||
shareBookingUseCase: context.read(),
|
||||
bookingRepository: context.read(),
|
||||
);
|
||||
|
||||
// When opening the booking screen with an existing id
|
||||
// load and display that booking.
|
||||
viewModel.loadBooking.execute(id);
|
||||
|
||||
return BookingScreen(
|
||||
viewModel: viewModel,
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
);
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
// From https://github.com/flutter/packages/blob/main/packages/go_router/example/lib/redirection.dart
|
||||
Future<String?> _redirect(BuildContext context, GoRouterState state) async {
|
||||
|
||||
Reference in New Issue
Block a user