54 lines
1.6 KiB
Dart
54 lines
1.6 KiB
Dart
import 'package:barcode_scanner/pages/home_page/home_page.dart';
|
|
import 'package:barcode_scanner/pages/login_page/login_page_model.dart';
|
|
import 'package:barcode_scanner/pages/scanner_page/scanner_page.dart';
|
|
import 'package:barcode_scanner/provider_container.dart';
|
|
import 'package:barcode_scanner/router/go_router_builder.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';
|
|
|
|
// Groupe des routes sécurisées
|
|
@TypedGoRoute<SecureRoute>(
|
|
path: '/$_securePage',
|
|
routes: [
|
|
TypedGoRoute<HomeRoute>(path: _homePage),
|
|
TypedGoRoute<ScannerRoute>(path: _scannerPage),
|
|
],
|
|
)
|
|
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();
|
|
}
|