You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.4 KiB
119 lines
3.4 KiB
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/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<bool> 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();
|
|
}
|
|
|
|
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() 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();
|
|
}
|
|
}
|