feat-add-files-from-qr (#8)

Reviewed-on: http://catelliub.zapto.org:3000/brontomark/flux/pulls/8
Co-authored-by: Mark M2 Macbook <marco@catelli.it>
Co-committed-by: Mark M2 Macbook <marco@catelli.it>
This commit is contained in:
2026-04-26 10:15:34 +02:00
committed by brontomark
parent 90bd5ecacf
commit 1c2bcf9df7
46 changed files with 2376 additions and 327 deletions

View File

@@ -5,15 +5,19 @@ import 'package:flutter_bloc/flutter_bloc.dart';
// Importa il tuo SessionCubit e lo State
import 'package:flux/core/blocs/session/session_cubit.dart';
import 'package:flux/core/data/core_repository.dart';
import 'package:flux/features/customers/ui/customer_mobile_upload_screen.dart';
import 'package:flux/features/auth/ui/auth_screen.dart';
import 'package:flux/features/customers/blocs/customer_files_bloc.dart';
import 'package:flux/features/customers/models/customer_model.dart';
import 'package:flux/features/customers/ui/customer_detail_screen.dart';
import 'package:flux/features/home/ui/home_screen.dart';
import 'package:flux/features/master_data/products/ui/products_screen.dart';
import 'package:flux/features/onboarding/blocs/onboarding_cubit.dart';
import 'package:flux/features/onboarding/ui/onboarding_screen.dart';
import 'package:flux/features/services/blocs/service_files_bloc.dart';
import 'package:flux/features/services/models/service_model.dart';
import 'package:flux/features/services/ui/service_form_screen/service_form_screen.dart';
import 'package:flux/features/services/ui/service_form_screen/service_mobile_upload_screen.dart';
import 'package:get_it/get_it.dart';
import 'package:go_router/go_router.dart';
@@ -90,7 +94,27 @@ class AppRouter {
builder: (context, state) {
// Recuperiamo l'oggetto customer passato tramite extra
final customer = state.extra as CustomerModel;
return CustomerDetailScreen(customer: customer);
return BlocProvider(
create: (context) => CustomerFilesBloc(customer.id!),
child: CustomerDetailScreen(customer: customer),
);
},
),
GoRoute(
path: '/customer/:id/upload',
builder: (context, state) {
final customerId = state.pathParameters['id']!;
// Recuperiamo il nome dalle query se vogliamo mostrarlo nel titolo,
// oppure lo caricherà il bloc.
final customerName = state.uri.queryParameters['name'] ?? 'Cliente';
return BlocProvider(
create: (context) => CustomerFilesBloc(customerId),
child: CustomerMobileUploadScreen(
customerId: customerId,
customerName: customerName,
),
);
},
),
GoRoute(
@@ -107,9 +131,29 @@ class AppRouter {
// Recuperiamo l'ID se presente nell'URL
final serviceId = state.uri.queryParameters['serviceId'];
return ServiceFormScreen(
serviceId: serviceId ?? existingService?.id,
existingService: existingService,
return BlocProvider(
create: (context) =>
ServiceFilesBloc(serviceId: serviceId ?? existingService?.id),
child: ServiceFormScreen(
serviceId: serviceId ?? existingService?.id,
existingService: existingService,
),
);
},
),
GoRoute(
path: '/service/:id/upload',
builder: (context, state) {
final serviceId = state.pathParameters['id']!;
final serviceName = state.uri.queryParameters['name'] ?? 'Pratica';
return BlocProvider(
// Inizializziamo il bloc col serviceId corretto!
create: (context) => ServiceFilesBloc(serviceId: serviceId),
child: ServiceMobileUploadScreen(
serviceId: serviceId,
serviceName: serviceName,
),
);
},
),