import 'package:e_scan/pages/login/login_page_model.dart'; import 'package:e_scan/provider_container.dart'; import 'package:e_scan/router/go_router_builder.dart'; import 'package:e_scan/pages/pages.dart'; import 'package:e_scan/router/router.dart'; import 'package:flutter/material.dart'; export 'package:go_router/go_router.dart'; part 'go_secure_router_builder.g.dart'; final appSecureRoutes = $appRoutes; // Groupe des routes sécurisées @TypedGoRoute( path: '/SecurePage', routes: [ TypedGoRoute(path: 'ScannerPage'), TypedGoRoute(path: 'ProductFormPage'), TypedGoRoute(path: 'ProductListPage'), TypedGoRoute(path: 'ProfilePage'), TypedGoRoute(path: 'ReceptionPage'), TypedGoRoute(path: 'DeliveryPage'), TypedGoRoute(path: 'InventoryPage'), TypedGoRoute(path: 'ReceptionDetailsPage'), TypedGoRoute(path: 'ReceptionScanPage'), ], ) class SecureRoute extends GoRouteData with _$SecureRoute { const SecureRoute(); @override Widget build(BuildContext context, GoRouterState state) => SizedBox(); /// Logique de redirection pour sécuriser les sous-routes @override String? redirect(BuildContext context, GoRouterState state) { final authState = providerContainer .read(loginPageModelProvider) .status .isLogged; if (!authState) return SplashRoute().location; return null; } } class ScannerRoute extends GoRouteData with _$ScannerRoute { const ScannerRoute(); @override Widget build(BuildContext context, GoRouterState state) => ScannerPage(); } class ProductFormRoute extends GoRouteData with _$ProductFormRoute { const ProductFormRoute({required this.id}); final int id; @override Widget build(BuildContext context, GoRouterState state) => ProductFormPage(id: id); } class ProductListRoute extends GoRouteData with _$ProductListRoute { const ProductListRoute(); @override Widget build(BuildContext context, GoRouterState state) => ProductListPage(); } class ProfileRoute extends GoRouteData with _$ProfileRoute { const ProfileRoute(); @override Widget build(BuildContext context, GoRouterState state) => ProfilePage(); } class ReceptionRoute extends GoRouteData with _$ReceptionRoute { const ReceptionRoute(); @override CustomTransitionPage buildPage( BuildContext context, GoRouterState state, ) => buildPageWithDefaultTransition( context: context, state: state, child: ReceptionPage(), ); } class DeliveryRoute extends GoRouteData with _$DeliveryRoute { const DeliveryRoute(); @override CustomTransitionPage buildPage( BuildContext context, GoRouterState state, ) => buildPageWithDefaultTransition( context: context, state: state, child: DeliveryPage(), ); } class InventoryRoute extends GoRouteData with _$InventoryRoute { const InventoryRoute(); @override CustomTransitionPage buildPage( BuildContext context, GoRouterState state, ) => buildPageWithDefaultTransition( context: context, state: state, child: InventoryPage(), ); } class ReceptionDetailsRoute extends GoRouteData with _$ReceptionDetailsRoute { const ReceptionDetailsRoute({required this.receptionId}); final int receptionId; @override Widget build(BuildContext context, GoRouterState state) => ReceptionDetailsPage(receptionId: receptionId); } class ReceptionScanRoute extends GoRouteData with _$ReceptionScanRoute { const ReceptionScanRoute({required this.receptionId}); final int receptionId; @override Widget build(BuildContext context, GoRouterState state) => ReceptionScanPage(receptionId: receptionId); }