基础库
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.
 
 
 
 
 

67 regels
1.9 KiB

  1. import 'dart:convert';
  2. import 'package:flutter/material.dart';
  3. import 'package:zhiying_comm/models/user/user_info_model.dart';
  4. import 'package:zhiying_comm/util/global_config.dart';
  5. import 'package:zhiying_comm/util/log/let_log.dart';
  6. import 'package:zhiying_comm/util/shared_prefe_util.dart';
  7. ///
  8. /// 用户信息Provider
  9. ///
  10. class UserInfoNotifier with ChangeNotifier {
  11. /// 用户信息
  12. UserInfoModel _userInfo;
  13. UserInfoModel get userInfo {
  14. if (null == _userInfo) {
  15. getUserInfoModel().then((user) {
  16. if (user != null) notifyListeners();
  17. });
  18. }
  19. return _userInfo;
  20. }
  21. /// 更新用户数据
  22. void setUserInfo(UserInfoModel loginUser) async {
  23. print('${loginUser.toString()}');
  24. this._userInfo = loginUser;
  25. // 缓存数据
  26. await SharedPreferencesUtil.setStringValue(
  27. GlobalConfig.SHARED_KEY_TOKEN, loginUser.token);
  28. await SharedPreferencesUtil.setStringValue(
  29. GlobalConfig.SHARED_KEY_MOBILE, loginUser.mobile);
  30. await SharedPreferencesUtil.setStringValue(
  31. GlobalConfig.SHARED_KEY_USER_INFO, jsonEncode(loginUser.toJson()));
  32. notifyListeners();
  33. }
  34. /// 退出登陆
  35. void unLogin() async {
  36. this._userInfo = null;
  37. // 清除缓存数据
  38. await SharedPreferencesUtil.setStringValue(
  39. GlobalConfig.SHARED_KEY_TOKEN, '');
  40. await SharedPreferencesUtil.setStringValue(
  41. GlobalConfig.SHARED_KEY_MOBILE, '');
  42. await SharedPreferencesUtil.setStringValue(
  43. GlobalConfig.SHARED_KEY_USER_INFO, '');
  44. notifyListeners();
  45. }
  46. /// 获取登陆数据
  47. Future<UserInfoModel> getUserInfoModel() async {
  48. if (null != _userInfo) {
  49. return _userInfo;
  50. }
  51. try {
  52. String userInfoJson = await SharedPreferencesUtil.getStringValue(
  53. GlobalConfig.SHARED_KEY_USER_INFO);
  54. _userInfo = UserInfoModel.fromJson(jsonDecode(userInfoJson));
  55. } catch (e) {
  56. Logger.log(e);
  57. }
  58. return _userInfo;
  59. }
  60. }