Files
app_fideliter/lib/screens/auth_gate.dart
T
2026-07-18 11:51:32 +02:00

65 lines
1.6 KiB
Dart

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<void> _chargement;
@override
void initState() {
super.initState();
_chargement = _charger();
}
Future<void> _charger() async {
await Reglages.instance.charger();
await ClientRepository.instance.charger();
await RecompenseRepository.instance.charger();
}
@override
Widget build(BuildContext context) {
return FutureBuilder<void>(
future: _chargement,
builder: (context, snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return const Scaffold(
body: Center(child: CircularProgressIndicator()),
);
}
return const HomeShell();
},
);
}
}