feat: synchronisation mode deconnecte fin chat et stats
This commit is contained in:
@@ -13,6 +13,7 @@ import 'package:geosector_app/core/repositories/membre_repository.dart';
|
||||
import 'package:geosector_app/core/repositories/amicale_repository.dart';
|
||||
import 'package:geosector_app/core/services/sync_service.dart';
|
||||
import 'package:geosector_app/core/services/connectivity_service.dart';
|
||||
import 'package:geosector_app/core/services/chat_manager.dart';
|
||||
import 'package:geosector_app/presentation/auth/splash_page.dart';
|
||||
import 'package:geosector_app/presentation/auth/login_page.dart';
|
||||
import 'package:geosector_app/presentation/auth/register_page.dart';
|
||||
@@ -30,9 +31,62 @@ final syncService = SyncService(userRepository: userRepository);
|
||||
final connectivityService = ConnectivityService();
|
||||
final themeService = ThemeService.instance;
|
||||
|
||||
class GeosectorApp extends StatelessWidget {
|
||||
class GeosectorApp extends StatefulWidget {
|
||||
const GeosectorApp({super.key});
|
||||
|
||||
@override
|
||||
State<GeosectorApp> createState() => _GeosectorAppState();
|
||||
}
|
||||
|
||||
class _GeosectorAppState extends State<GeosectorApp> with WidgetsBindingObserver {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
WidgetsBinding.instance.addObserver(this);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
// Arrêter le chat quand l'app se ferme
|
||||
ChatManager.instance.dispose();
|
||||
WidgetsBinding.instance.removeObserver(this);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
void didChangeAppLifecycleState(AppLifecycleState state) {
|
||||
switch (state) {
|
||||
case AppLifecycleState.resumed:
|
||||
// App revenue au premier plan - relancer les syncs
|
||||
debugPrint('📱 App au premier plan - Reprise des syncs chat');
|
||||
ChatManager.instance.resumeSyncs();
|
||||
break;
|
||||
|
||||
case AppLifecycleState.paused:
|
||||
// App mise en arrière-plan - arrêter les syncs pour économiser la batterie
|
||||
debugPrint('⏸️ App en arrière-plan - Pause des syncs chat');
|
||||
ChatManager.instance.pauseSyncs();
|
||||
break;
|
||||
|
||||
case AppLifecycleState.inactive:
|
||||
// État transitoire (ex: appel entrant) - ne rien faire
|
||||
debugPrint('💤 App inactive temporairement');
|
||||
break;
|
||||
|
||||
case AppLifecycleState.detached:
|
||||
// App vraiment fermée (rare sur mobile) - nettoyer complètement
|
||||
debugPrint('🛑 App fermée complètement - Arrêt total du chat');
|
||||
ChatManager.instance.dispose();
|
||||
break;
|
||||
|
||||
case AppLifecycleState.hidden:
|
||||
// État masqué (Flutter 3.13+) - traiter comme paused
|
||||
debugPrint('👻 App masquée');
|
||||
ChatManager.instance.pauseSyncs();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AnimatedBuilder(
|
||||
|
||||
Reference in New Issue
Block a user