cambiato router in go_router

This commit is contained in:
2026-04-09 18:17:48 +02:00
parent e6b8c9854e
commit bb631a5d43
5 changed files with 307 additions and 39 deletions

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flux/core/blocs/session/session_bloc.dart';
import 'package:flux/core/routes/app_router.dart';
import 'package:flux/core/theme/theme.dart';
import 'package:flux/core/theme/bloc/theme_bloc.dart';
import 'package:flux/features/auth/bloc/auth_bloc.dart';
@@ -63,47 +64,23 @@ class FluxApp extends StatelessWidget {
Widget build(BuildContext context) {
return BlocBuilder<ThemeBloc, ThemeState>(
builder: (context, state) {
return MaterialApp(
title: 'FLUX Gestionale',
debugShowCheckedModeBanner: false,
theme: fluxLightTheme,
darkTheme: fluxDarkTheme,
themeMode: state.currentTheme.themeMode, // Applica il tema FLUX
home: const AuthGuard(),
// Creiamo il router passando il SessionBloc che è già nell'albero grazie al MultiBlocProvider
final router = AppRouter.createRouter(context.read<SessionBloc>());
return BlocBuilder<ThemeBloc, ThemeState>(
builder: (context, state) {
return MaterialApp.router(
// <--- Diventa .router
title: 'FLUX Gestionale',
debugShowCheckedModeBanner: false,
theme: fluxLightTheme,
darkTheme: fluxDarkTheme,
themeMode: state.currentTheme.themeMode,
routerConfig: router, // <--- Configurazione GoRouter
);
},
);
},
);
}
}
class AuthGuard extends StatelessWidget {
const AuthGuard({super.key});
@override
Widget build(BuildContext context) {
return BlocBuilder<SessionBloc, SessionState>(
builder: (context, state) {
switch (state.status) {
case SessionStatus.unauthenticated:
return const AuthScreen();
case SessionStatus.authenticatedNoCompany:
// Pagina forzata per inserimento P.IVA e Ragione Sociale
return const CreateCompanyScreen();
case SessionStatus.authenticatedNoStore:
// Pagina forzata per creare il primo punto vendita
return const CreateStoreScreen();
case SessionStatus.ready:
return const HomeScreen(); // Entra direttamente nel negozio salvato
default:
return const Scaffold(
body: Center(child: CircularProgressIndicator()),
);
}
},
);
}
}