基础库
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 
 

86 рядки
2.3 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. static UserInfoModel _userInfo;
  13. static UserInfoModel get staitcUserInfo {
  14. return _userInfo;
  15. }
  16. UserInfoModel get userInfo {
  17. if (null == _userInfo) {
  18. getUserInfoModel().then((user) {
  19. if (user != null) {
  20. _userInfo = user;
  21. notifyListeners();
  22. }
  23. });
  24. }
  25. return _userInfo;
  26. }
  27. /// 更新淘宝授权
  28. void updateUserAuth(bool isAuth){
  29. if(_userInfo != null){
  30. _userInfo.isTBAuth = isAuth;
  31. notifyListeners();
  32. }
  33. }
  34. /// 更新用户数据
  35. void setUserInfo(UserInfoModel loginUser) async {
  36. print('${loginUser.toString()}');
  37. _userInfo = loginUser;
  38. // 缓存数据
  39. await SharedPreferencesUtil.setStringValue(
  40. GlobalConfig.SHARED_KEY_TOKEN, loginUser.token);
  41. await SharedPreferencesUtil.setStringValue(
  42. GlobalConfig.SHARED_KEY_MOBILE, loginUser.mobile);
  43. await SharedPreferencesUtil.setStringValue(
  44. GlobalConfig.SHARED_KEY_USER_INFO, jsonEncode(loginUser.toJson()));
  45. notifyListeners();
  46. }
  47. /// 退出登陆
  48. void unLogin() async {
  49. _userInfo = null;
  50. // 清除缓存数据
  51. await SharedPreferencesUtil.setStringValue(
  52. GlobalConfig.SHARED_KEY_TOKEN, '');
  53. await SharedPreferencesUtil.setStringValue(
  54. GlobalConfig.SHARED_KEY_MOBILE, '');
  55. await SharedPreferencesUtil.setStringValue(
  56. GlobalConfig.SHARED_KEY_USER_INFO, '');
  57. notifyListeners();
  58. }
  59. /// 获取登陆数据
  60. Future<UserInfoModel> getUserInfoModel() async {
  61. if (null != _userInfo) {
  62. return _userInfo;
  63. }
  64. try {
  65. String userInfoJson = await SharedPreferencesUtil.getStringValue(
  66. GlobalConfig.SHARED_KEY_USER_INFO);
  67. if (userInfoJson == null || userInfoJson == '') {
  68. _userInfo = UserInfoModel();
  69. } else {
  70. _userInfo = UserInfoModel.fromJson(jsonDecode(userInfoJson));
  71. }
  72. } catch (e) {
  73. Logger.log(e);
  74. }
  75. return _userInfo;
  76. }
  77. }