import 'dart:convert'; import 'package:chat/data/UserData.dart'; import 'package:chat/data/group_data_mgr.dart'; import 'package:chat/utils/HttpUtil.dart'; import 'package:chat/utils/TokenMgr.dart'; import 'package:chat/utils/friend_list_mgr.dart'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:oktoast/oktoast.dart'; import 'package:shared_preferences/shared_preferences.dart'; class RefNameProvider with ChangeNotifier { int curSelectIndex = 0; Map refMap = {}; init() async { print('初始化别名'); var sp = await SharedPreferences.getInstance(); List refList = sp.getStringList('Ref_Name' + UserData().basicInfo.userId.toString()); refMap.clear(); if (refList != null) { for (var i = 0; i < refList.length; i++) { Map ref = json.decode(refList[i]); refMap[ref['userId']] = ref['refName']; } notifyListeners(); } else { sysnRefListFromServer(); } } sysnRefListFromServer() async { Map data = {"userId": UserData().basicInfo.userId}; data['sign'] = TokenMgr().getSign(data); try { Response res = await HttpUtil().post('alias/user/list', data: data); if (res == null) { return; } var resData = res.data; if (resData['code'] == 0) { List jsonList = resData['data']; if (jsonList == null || jsonList.length == 0) { return; } for (var i = 0; i < jsonList.length; i++) { var ref = jsonList[i]; refMap[ref['userId']] = Uri.decodeComponent(ref['aliasName']); } } } catch (e) {} } getRefName(int userId, String name) { return refMap[userId] == null ? name : refMap[userId]; } String getGroupRefName(int sessionId, int userId) { if (refMap[userId] != null) { return refMap[userId]; } var groupRefName = GroupInfoMgr().getGroupFdName(sessionId, userId); if (groupRefName != null) { return groupRefName; } return ''; } changeRefName(int userId, String refName, callback) { if (refName == null || refName == '') { refMap.remove(userId); } else { refMap[userId] = refName; } notifyListeners(); saveRefName(); FriendListMgr().updateRefNmae(userId); commitChangeToServer(userId, refName, callback); } commitChangeToServer(int userId, String refName, callback) async { Map data = {"userId": UserData().basicInfo.userId, "aliasUserId": userId}; data['sign'] = TokenMgr().getSign(data); data["aliasName"] = Uri.encodeComponent(refName); try { Response res = await HttpUtil() .post('alias/set/up', data: data, isShowLoading: true); if (res == null) { return; } var resData = res.data; showToast(resData['msg']); if (resData['code'] == 0) { print('设置别名成功'); if (callback != null) callback(); } else { print(resData.msg); } } catch (e) {} } saveRefName() async { List refList = []; refMap.keys.forEach((userId) { var refStr = json.encode({"userId": userId, "refName": refMap[userId]}); refList.add(refStr); }); var sp = await SharedPreferences.getInstance(); sp.setStringList( 'Ref_Name' + UserData().basicInfo.userId.toString(), refList); } }