import 'package:flutter/material.dart'; import 'token_service.dart'; import '../models/user_model.dart'; /// 认证状态管理 class AuthProvider extends ChangeNotifier { final TokenService _tokenService = TokenService(); bool _isLoading = false; bool _isAuthenticated = false; UserModel? _currentUser; String? _errorMessage; bool get isLoading => _isLoading; bool get isAuthenticated => _isAuthenticated; UserModel? get currentUser => _currentUser; String? get errorMessage => _errorMessage; /// 初始化认证状态 Future init() async { _isAuthenticated = await _tokenService.isLoggedIn(); if (_isAuthenticated) { // TODO: 从接口获取用户信息 _currentUser = UserModel( id: '1', username: 'admin', name: '管理员', role: 'admin', ); } notifyListeners(); } /// 登录 Future login({ required String username, required String password, }) async { _isLoading = true; _errorMessage = null; notifyListeners(); try { // TODO: 调用实际登录接口 // final response = await DioClient().post('/auth/login', data: { // 'username': username, // 'password': password, // }); // 模拟登录成功 await _tokenService.saveTokens( token: 'mock_access_token_${DateTime.now().millisecondsSinceEpoch}', refreshToken: 'mock_refresh_token', expiresIn: 7200, ); _currentUser = UserModel( id: '1', username: username, name: username == 'admin' ? '管理员' : username, role: 'admin', ); _isAuthenticated = true; _isLoading = false; notifyListeners(); return true; } catch (e) { _errorMessage = '登录失败,请检查用户名和密码'; _isLoading = false; notifyListeners(); return false; } } /// 登出 Future logout() async { await _tokenService.clearTokens(); _isAuthenticated = false; _currentUser = null; notifyListeners(); } }