global_user_provider.dart 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import 'dart:io';
  2. import 'package:flutter_riverpod/flutter_riverpod.dart';
  3. import 'package:news_app/extension/base.dart';
  4. import 'package:news_app/http/http_util.dart';
  5. import 'package:news_app/model/base_response.dart';
  6. import 'package:news_app/model/user_model.dart';
  7. import 'package:news_app/util/shared_prefs_instance_util.dart';
  8. import '../constant/api_const.dart';
  9. import '../constant/config.dart';
  10. /// @author: bo.zeng
  11. /// @email: cnhbwds@gmail.com
  12. /// @date: 2025 2025/4/9 16:00
  13. /// @description:
  14. class GlobalUserNotifier extends Notifier<UserModel> {
  15. @override
  16. UserModel build() {
  17. return UserModel();
  18. }
  19. void updateUserData(UserModel userModel) {
  20. state = userModel;
  21. // 保存一个全局变量,方便在不使用 provider 的时候使用
  22. }
  23. Future<void> fetchUserInfo() async {
  24. if (uuid.isEmpty) {
  25. return;
  26. }
  27. final data = await HttpUtil().get(apiMemberInfo,queryParameters: {"versionNumber":"1.1.1","device":Platform.isIOS == true ? "ios" : "android"});
  28. UserModel userModel = UserModel.fromJson(data);
  29. updateUserData(userModel);
  30. }
  31. Future<void> fetchUserScore() async {
  32. // final data = await HttpUtil().get(apiMemberLevel);
  33. }
  34. Future<bool> fetchUserAvatarInfo({required String base64Image}) async {
  35. var result = await HttpUtil().post(
  36. apiMemberAvatar,
  37. data: {
  38. "image": "data:image/png;base64,$base64Image",
  39. "preview": true,
  40. },
  41. );
  42. String imageUrl = result;
  43. if (imageUrl.isNotEmpty) {
  44. updateUserData(UserModel(nickName: state.nickName, description: state.description,avatar: imageUrl,shareUrl: state.shareUrl,shareDesc:state.shareDesc,credit:state.credit,shopUrl:state.shopUrl,isShow: state.isShow));
  45. return true;
  46. }
  47. return false;
  48. }
  49. Future<bool> fetchUpdateUserInfo({
  50. required String nickname,
  51. required String description,
  52. }) async {
  53. var result = await HttpUtil().post(
  54. apiMemberInfo,
  55. data: {"nickName": nickname, "description": description},
  56. );
  57. BaseResponse response = BaseResponse.fromJson(result);
  58. if (response.isSuccess) {
  59. updateUserData(UserModel(nickName: nickname, description: description,avatar: state.avatar,shareUrl: state.shareUrl,shareDesc:state.shareDesc,credit:state.credit,shopUrl:state.shopUrl,isShow:state.isShow));
  60. return true;
  61. } else {
  62. return false;
  63. }
  64. }
  65. void clearUserInfo() {
  66. state = UserModel();
  67. uuid = "";
  68. clearUuid();
  69. }
  70. }