barcode_scanner/lib/router/go_secure_router_builder.dart
mandreshope 6c3f2b80b0 feat: Adds product editing and deletion features
Enables viewing and editing existing product details by passing the product ID to the form page. The form now loads and displays the product data based on the provided ID.

Adds a delete button to each item in the product list, allowing users to remove products directly from the list view.

Updates navigation from the product list and scanner pages to pass the product ID when navigating to the product form.

Includes minor code style changes by applying the `sort_constructors_first` lint rule and updates dependencies (`flutter_lints`, `lints`).
2025-07-04 10:06:13 +03:00

73 lines
2.2 KiB
Dart

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<SecureRoute>(
path: '/$_securePage',
routes: [
TypedGoRoute<HomeRoute>(path: _homePage),
TypedGoRoute<ScannerRoute>(path: _scannerPage),
TypedGoRoute<ProductFormRoute>(path: _productFormPage),
TypedGoRoute<ProductListRoute>(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();
}