import 'package:flutter/material.dart'; import '../pocketbase_config.dart'; import '../services/client_repository.dart'; import '../services/recompense_repository.dart'; import '../services/reglages.dart'; import 'home_shell.dart'; import 'staff_login_screen.dart'; /// Aiguille entre l'écran de connexion (staff non connecté) et l'app. /// Réagit aux changements de session PocketBase. class AuthGate extends StatelessWidget { const AuthGate({super.key}); @override Widget build(BuildContext context) { return StreamBuilder( stream: pb.authStore.onChange, builder: (context, snapshot) { if (!estStaff) return const StaffLoginScreen(); return const _AppChargee(); }, ); } } /// Charge les données (réglages, clients, récompenses) après connexion. class _AppChargee extends StatefulWidget { const _AppChargee(); @override State<_AppChargee> createState() => _AppChargeeState(); } class _AppChargeeState extends State<_AppChargee> { late Future _chargement; @override void initState() { super.initState(); _chargement = _charger(); } Future _charger() async { await Reglages.instance.charger(); await ClientRepository.instance.charger(); await RecompenseRepository.instance.charger(); } @override Widget build(BuildContext context) { return FutureBuilder( future: _chargement, builder: (context, snapshot) { if (snapshot.connectionState != ConnectionState.done) { return const Scaffold( body: Center(child: CircularProgressIndicator()), ); } return const HomeShell(); }, ); } }