import 'package:barcode_scanner/pages/login_page/login_page_model.dart'; import 'package:barcode_scanner/provider_container.dart'; import 'package:barcode_scanner/router/go_router_builder.dart'; import 'package:barcode_scanner/pages/pages.dart'; import 'package:flutter/material.dart'; export 'package:go_router/go_router.dart'; part 'go_secure_router_builder.g.dart'; final appSecureRoutes = $appRoutes; const String _securePage = 'SecurePage'; const String _homePage = 'HomePage'; const String _scannerPage = 'ScannerPage'; const String _productFormPage = 'ProductFormPage'; const String _productListPage = 'ProductListPage'; // Groupe des routes sécurisées @TypedGoRoute( path: '/$_securePage', routes: [ TypedGoRoute(path: _homePage), TypedGoRoute(path: _scannerPage), TypedGoRoute(path: _productFormPage), TypedGoRoute(path: _productListPage), ], ) 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 HomeRoute extends GoRouteData with _$HomeRoute { const HomeRoute(); @override Widget build(BuildContext context, GoRouterState state) => HomePage(); } 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(); }