import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:dio/dio.dart'; import '../services/local_database.dart'; class AuthController extends GetxController { final LocalDatabase _localDatabase = LocalDatabase(); final RxBool isLoggedIn = false.obs; final RxBool isOnlineMode = false.obs; final RxString username = ''.obs; @override void onInit() { super.onInit(); checkLoginStatus(); } Future checkLoginStatus() async { final prefs = await SharedPreferences.getInstance(); final offlineLogin = prefs.getBool('offlineLogin') ?? false; isLoggedIn.value = offlineLogin; if (offlineLogin) { username.value = prefs.getString('username') ?? '离线用户'; } } Future offlineLogin(String username) async { final prefs = await SharedPreferences.getInstance(); await prefs.setBool('offlineLogin', true); await prefs.setString('username', username); isLoggedIn.value = true; this.username.value = username; isOnlineMode.value = false; return true; } Future onlineLogin(String username, String password) async { try { final dio = Dio(); final response = await dio.post( 'https://your-server.com/api/login', data: {'username': username, 'password': password}, ); if (response.statusCode == 200) { final prefs = await SharedPreferences.getInstance(); await prefs.setBool('offlineLogin', false); await prefs.setString('username', username); isLoggedIn.value = true; this.username.value = username; isOnlineMode.value = true; return true; } return false; } catch (e) { return false; } } Future logout() async { final prefs = await SharedPreferences.getInstance(); await prefs.remove('offlineLogin'); await prefs.remove('username'); isLoggedIn.value = false; username.value = ''; } }