import 'package:comwell_key_app/check_out/bloc/check_out_cubit.dart';
import 'package:comwell_key_app/check_out/bloc/check_out_state.dart';
import 'package:comwell_key_app/check_out/check_out_flow.dart';
import 'package:comwell_key_app/check_out/pages/check_out_error_page.dart';
import 'package:comwell_key_app/check_out/pages/check_out_success_page.dart';
import 'package:comwell_key_app/overview/models/booking.dart';
import 'package:comwell_key_app/routing/app_routes.dart';
import 'package:comwell_key_app/utils/locator.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
final checkOutRoutes = [_checkOutError, _checkOutSuccess, _checkOutFlow];
final _checkOutError = GoRoute(
path: AppRoutes.checkOutError,
builder: (context, state) {
return BlocProvider(
create: (context) => CheckoutCubit(state.extra as Booking, locator(), context.read()),
child: BlocBuilder<CheckoutCubit, CheckoutState>(
builder: (context, state) {
return CheckOutErrorPage(key: ValueKey(state));
},
),
);
},
);
final _checkOutSuccess = GoRoute(
path: AppRoutes.checkOutSuccess,
builder: (context, state) {
final extras = state.extra as List<dynamic>;
final digitalCard = extras[0] as bool;
final booking = extras[1] as Booking;
return BlocProvider(
create: (context) => CheckoutCubit(booking, locator(), context.read()),
child: BlocBuilder<CheckoutCubit, CheckoutState>(
builder: (context, state) {
return CheckOutSuccessPage(digitalCard: digitalCard, key: ValueKey(state));
},
),
);
},
);
final _checkOutFlow = GoRoute(
path: AppRoutes.checkOut,
builder: (context, state) {
final booking = state.extra as Booking;
return BlocProvider(
create: (context) => CheckoutCubit(booking, locator(), context.read()),
child: BlocBuilder<CheckoutCubit, CheckoutState>(
builder: (context, state) {
return CheckOutFlow(key: ValueKey(state));
},
),
);
},
);