Reviewed-on: http://catelliub.zapto.org:3000/brontomark/flux/pulls/2
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-16 11:50:29 +02:00
committed by brontomark
parent 753b5489b6
commit 5229571fa1
14 changed files with 1313 additions and 14 deletions

View File

@@ -3,6 +3,8 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flux/core/blocs/session/session_bloc.dart';
import 'package:flux/core/theme/theme.dart';
import 'package:flux/features/master_data/master_data_hub_content.dart';
import 'package:flux/features/services/blocs/services_cubit.dart';
import 'package:flux/features/services/ui/services_screen.dart';
import 'dashboard_content.dart'; // Importiamo il contenuto della dashboard
class HomeScreen extends StatefulWidget {
@@ -16,6 +18,16 @@ class _HomeScreenState extends State<HomeScreen> {
int _selectedIndex = 0;
bool _extendRailway = false;
@override
void initState() {
super.initState();
// Caricamento "silenzioso" all'avvio dell'app
// Usiamo WidgetsBinding per assicurarci che il contesto sia pronto
WidgetsBinding.instance.addPostFrameCallback((_) {
context.read<ServicesCubit>().loadServices();
});
}
@override
Widget build(BuildContext context) {
return BlocBuilder<SessionBloc, SessionState>(
@@ -63,7 +75,7 @@ class _HomeScreenState extends State<HomeScreen> {
),
BottomNavigationBarItem(
icon: Icon(Icons.receipt_long),
label: 'Operazioni',
label: 'Servizi',
),
BottomNavigationBarItem(
icon: Icon(Icons.folder_shared),
@@ -111,7 +123,7 @@ class _HomeScreenState extends State<HomeScreen> {
NavigationRailDestination(
icon: Icon(Icons.receipt_long_outlined),
selectedIcon: Icon(Icons.receipt_long),
label: Text('Operazioni'),
label: Text('Servizi'),
),
NavigationRailDestination(
icon: Icon(Icons.folder_shared_outlined),
@@ -148,17 +160,18 @@ class _HomeScreenState extends State<HomeScreen> {
// Switch tra le sottopagine
Widget _buildPageContent(int index, bool isLargeScreen) {
switch (index) {
case 0:
return DashboardContent(
return IndexedStack(
index: index,
children: [
DashboardContent(
isLargeScreen: isLargeScreen,
onTabRequested: (idx) => setState(() => _selectedIndex = 2),
);
case 1:
return const Center(child: Text('Operazioni'));
case 2:
),
ServicesScreen(),
// L'unico punto di ingresso per tutte le anagrafiche
return MasterDataHubContent(
MasterDataHubContent(
// Qui gestiamo la navigazione "interna" all'hub
onOpenPage: (widget) {
Navigator.push(
@@ -166,9 +179,8 @@ class _HomeScreenState extends State<HomeScreen> {
MaterialPageRoute(builder: (context) => widget),
);
},
);
default:
return DashboardContent(isLargeScreen: isLargeScreen);
}
),
],
);
}
}