feat-insert-service (#5)

Reviewed-on: http://catelliub.zapto.org:3000/brontomark/flux/pulls/5
Co-authored-by: mark-cachy <marco@catelli.it>
Co-committed-by: mark-cachy <marco@catelli.it>
This commit is contained in:
2026-04-20 16:52:20 +02:00
committed by brontomark
parent 667bbf6404
commit c3d4f3fac7
63 changed files with 4715 additions and 1371 deletions

View File

@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flux/features/services/blocs/services_cubit.dart';
import 'package:flux/features/services/models/service_model.dart';
import 'package:flux/features/services/utils/service_actions.dart';
import 'package:go_router/go_router.dart';
// Importa i tuoi modelli e cubit
@@ -20,6 +21,8 @@ class _ServicesScreenState extends State<ServicesScreen> {
super.initState();
// Agganciamo il listener per la paginazione (Scroll Infinito)
_scrollController.addListener(_onScroll);
// Carichiamo i servizi iniziali
context.read<ServicesCubit>().loadServices();
}
void _onScroll() {
@@ -60,7 +63,8 @@ class _ServicesScreenState extends State<ServicesScreen> {
body: BlocBuilder<ServicesCubit, ServicesState>(
builder: (context, state) {
// 1. Stato di caricamento iniziale
if (state.isLoading && state.allServices.isEmpty) {
if (state.status == ServicesStatus.loading &&
state.allServices.isEmpty) {
return const Center(child: CircularProgressIndicator());
}
@@ -111,7 +115,7 @@ class _ServicesScreenState extends State<ServicesScreen> {
},
),
floatingActionButton: FloatingActionButton(
onPressed: () => context.pushNamed('service-form'), // GoRouter
onPressed: () => startNewService(context),
child: const Icon(Icons.add),
),
);
@@ -171,7 +175,12 @@ class _ServicesScreenState extends State<ServicesScreen> {
],
),
trailing: const Icon(Icons.chevron_right),
onTap: () => context.pushNamed('service-form', extra: service),
onTap: () => context.pushNamed(
'service-form',
extra: service, // <-- LA MAGIA È QUI: Passa l'oggetto intero!
// Teniamo anche il parametro URL per coerenza di routing
queryParameters: service.id != null ? {'serviceId': service.id!} : {},
),
),
);
}