barcode_scanner/lib/router/go_secure_router_builder.dart
mandreshope 2c003ba335 feat: Implements reception-specific scanning
Replaces the generic scanner route with a dedicated reception scanning page.

This change ensures the scanning process initiated from reception details is context-aware by passing the reception ID directly to the new `ReceptionScanPage`. This provides a more tailored and efficient workflow for reception operations.
2025-07-30 17:00:49 +03:00

133 lines
3.7 KiB
Dart

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<SecureRoute>(
path: '/SecurePage',
routes: [
TypedGoRoute<ScannerRoute>(path: 'ScannerPage'),
TypedGoRoute<ProductFormRoute>(path: 'ProductFormPage'),
TypedGoRoute<ProductListRoute>(path: 'ProductListPage'),
TypedGoRoute<ProfileRoute>(path: 'ProfilePage'),
TypedGoRoute<ReceptionRoute>(path: 'ReceptionPage'),
TypedGoRoute<DeliveryRoute>(path: 'DeliveryPage'),
TypedGoRoute<InventoryRoute>(path: 'InventoryPage'),
TypedGoRoute<ReceptionDetailsRoute>(path: 'ReceptionDetailsPage'),
TypedGoRoute<ReceptionScanRoute>(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<void> buildPage(
BuildContext context,
GoRouterState state,
) => buildPageWithDefaultTransition(
context: context,
state: state,
child: ReceptionPage(),
);
}
class DeliveryRoute extends GoRouteData with _$DeliveryRoute {
const DeliveryRoute();
@override
CustomTransitionPage<void> buildPage(
BuildContext context,
GoRouterState state,
) => buildPageWithDefaultTransition(
context: context,
state: state,
child: DeliveryPage(),
);
}
class InventoryRoute extends GoRouteData with _$InventoryRoute {
const InventoryRoute();
@override
CustomTransitionPage<void> 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);
}