import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'api_client_provider.dart'; enum AuthStatus { unknown, authenticated, unauthenticated } final authProvider = NotifierProvider(AuthNotifier.new); class AuthNotifier extends Notifier { @override AuthStatus build() => 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; } } }