import 'package:comwell_key_app/presentation/navigation/transitions/slide_in_transition.dart';
import 'package:comwell_key_app/presentation/navigation/transitions/slide_up_transition.dart';
import 'package:comwell_key_app/presentation/screens/onboarding/usage_tracking/usage_tracking_permission_cubit.dart';
import 'package:comwell_key_app/presentation/screens/onboarding/usage_tracking/usage_tracking_permission_screen.dart';
import 'package:comwell_key_app/routing/app_routes.dart';
import 'package:comwell_key_app/utils/locator.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
import 'bluetooth/bluetooth_permission_cubit.dart';
import 'bluetooth/bluetooth_permission_screen.dart';
import 'internet/internet_disabled_screen.dart';
import 'notifications/notification_permission_cubit.dart';
import 'notifications/notification_permission_screen.dart';
part '../../../.generated/presentation/screens/onboarding/onboarding_routes.g.dart';
@TypedGoRoute<BluetoothPermissionRoute>(path: AppRoutes.onboardingBluetooth)
class BluetoothPermissionRoute extends GoRouteData with $BluetoothPermissionRoute {
final bool isOnboarding;
const BluetoothPermissionRoute({this.isOnboarding = false});
@override
Page<void> buildPage(BuildContext context, GoRouterState state) {
final child = BlocProvider(
create: (context) =>
BluetoothPermissionCubit(locator.get(), locator.get(), isOnboarding: isOnboarding),
child: const BluetoothPermissionScreen(),
);
if (isOnboarding) {
return SlideInTransition(
state: state,
child: child,
);
}
return SlideUpTransition(
state: state,
child: child,
);
}
}
@TypedGoRoute<NotificationPermissionRoute>(path: AppRoutes.onboardingNotification)
class NotificationPermissionRoute extends GoRouteData with $NotificationPermissionRoute {
const NotificationPermissionRoute();
@override
Page<void> buildPage(BuildContext context, GoRouterState state) {
return SlideInTransition(
state: state,
child: BlocProvider(
lazy: false,
create: (context) => NotificationPermissionCubit(
locator.get(),
),
child: const NotificationPermissionScreen(),
),
);
}
}
@TypedGoRoute<UsageTrackingPermissionRoute>(path: AppRoutes.onboardingUsageTracking)
class UsageTrackingPermissionRoute extends GoRouteData with $UsageTrackingPermissionRoute {
const UsageTrackingPermissionRoute();
@override
Page<void> buildPage(BuildContext context, GoRouterState state) {
return SlideInTransition(
state: state,
child: BlocProvider(
lazy: false,
create: (context) => UsageTrackingPermissionCubit(true, locator.get()),
child: const UsageTrackingPermissionScreen(),
),
);
}
}
@TypedGoRoute<InternetDisabledRoute>(path: AppRoutes.internetDisabled)
class InternetDisabledRoute extends GoRouteData with $InternetDisabledRoute {
const InternetDisabledRoute();
@override
Page<void> buildPage(BuildContext context, GoRouterState state) {
return SlideUpTransition(
state: state,
child: const InternetDisabledScreen(),
);
}
}