import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'api_client_provider.dart'; enum AuthStatus { unknown, authenticated, unauthenticated } final authProvider = StateNotifierProvider((ref) { return AuthNotifier(ref); }); class AuthNotifier extends StateNotifier { final Ref _ref; AuthNotifier(this._ref) : super(AuthStatus.unknown); Future verify() async { try { final repo = _ref.read(authRepositoryProvider); final ok = await repo.verify(); state = ok ? AuthStatus.authenticated : AuthStatus.unauthenticated; } catch (_) { state = AuthStatus.unauthenticated; } } Future login(String username, String password) async { final repo = _ref.read(authRepositoryProvider); await repo.login(username, password); state = AuthStatus.authenticated; } Future logout() async { try { final repo = _ref.read(authRepositoryProvider); await repo.logout(); } finally { state = AuthStatus.unauthenticated; } } }