import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_background_service/flutter_background_service.dart'; import 'package:project_telephony/utils/user_tool.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../constants/api.dart'; import '../model/exclude_phone_model.dart'; import '../model/login_info_model.dart'; import '../model/network/api_client.dart'; import '../model/user_info_model.dart'; import '../utils/hive_store.dart'; import '../utils/toast/cloud_toast.dart'; class UserProvider extends ChangeNotifier { bool _isLogin = false; bool _kg = false; bool get kg => _kg; bool get isLogin => _isLogin; late UserInfoModel _userInfo; UserInfoModel get userInfo => _userInfo; late String _contentCon; String get contentCon => _contentCon; late String _contentRef; String get contentRef => _contentRef; Future init() async { if (HiveStore.appBox?.containsKey('token') ?? false) { final token = HiveStore.appBox?.get('token') as String; _isLogin = true; apiClient.setToken(token); await updateUserInfo(); return true; } else { _isLogin = false; return false; } } Future setKg(bool lockage) async { _kg = lockage; notifyListeners(); } Future setToken(String token, {User? user}) async { apiClient.setToken(token); await HiveStore.appBox!.put('token', token); _isLogin = true; //每次打开app更新用户信息 await updateUserInfo(); updateConSms(); updateRefSms(); getExclude(); } Future logout() async { apiClient.clearToken(); _isLogin = false; await HiveStore.appBox?.delete('token'); } Future updateUserInfo() async { var base = await apiClient.request(API.app.info); if (base.code == 0) { _userInfo = UserInfoModel.fromJson(base.data); } else { CloudToast.show(base.msg); _userInfo = UserInfoModel.fail; } notifyListeners(); } Future updateConSms(int num ) async { final prefs = await SharedPreferences.getInstance(); final service = FlutterBackgroundService(); var base = await apiClient.request(API.app.find, data: {'status': 1}); if (base.code == 0) { await prefs.remove('conSms'); await prefs.setString( 'conSms', (UserTool.userProvider.userInfo.tag) == "" ? "${base.data['content']}" : "【${UserTool.userProvider.userInfo.tag}】${base.data['content']}"); service.invoke("stopService"); if (prefs.getBool('kg')!) { Future.delayed(const Duration(seconds: 1), () async { service.startService(); }); } } else { CloudToast.show(base.msg); } notifyListeners(); } Future updateRefSms() async { final prefs = await SharedPreferences.getInstance(); final service = FlutterBackgroundService(); var base = await apiClient.request(API.app.find, data: {'status': 2}); if (base.code == 0) { await prefs.remove('refSms'); await prefs.setString( 'refSms', (UserTool.userProvider.userInfo.tag) == "" ? "${base.data['content']}" : "【${UserTool.userProvider.userInfo.tag}】${base.data['content']}"); service.invoke("stopService"); if (prefs.getBool('kg')!) { Future.delayed(const Duration(seconds: 1), () async { service.startService(); }); } } else { CloudToast.show(base.msg); } notifyListeners(); } Future getExclude() async { final prefs = await SharedPreferences.getInstance(); final service = FlutterBackgroundService(); var base = await apiClient.request(API.exclude.find); if (base.code == 0) { await prefs.remove('exclude'); await prefs.setStringList('exclude', base.data); service.invoke("stopService"); if (prefs.getBool('kg')!) { Future.delayed(const Duration(seconds: 1), () async { service.startService(); }); } } else { CloudToast.show(base.msg); } notifyListeners(); } }