barcode_scanner/lib/router/go_secure_router_builder.dart
mandreshope f01c34d10c refactor: Refactors page directory structure
Moves page files from verbose `*_page` named directories to simpler, more organized paths.

This includes:
- Renaming top-level pages (e.g., `home_page` to `home`, `login_page` to `login`).
- Nesting related pages under common directories (e.g., `product_form_page` and `product_list_page` are now under `product/`).

The update improves project organization, reduces verbosity in file paths, and enhances overall maintainability.
2025-07-23 17:20:47 +03:00

82 lines
2.4 KiB
Dart

import 'package:barcode_scanner/pages/login/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';
const String _profilePage = "ProfilePage";
// Groupe des routes sécurisées
@TypedGoRoute<SecureRoute>(
path: '/$_securePage',
routes: [
TypedGoRoute<HomeRoute>(path: _homePage),
TypedGoRoute<ScannerRoute>(path: _scannerPage),
TypedGoRoute<ProductFormRoute>(path: _productFormPage),
TypedGoRoute<ProductListRoute>(path: _productListPage),
TypedGoRoute<ProfileRoute>(path: _profilePage),
],
)
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();
}
class ProfileRoute extends GoRouteData with _$ProfileRoute {
const ProfileRoute();
@override
Widget build(BuildContext context, GoRouterState state) => ProfilePage();
}