rewards_vm.dart 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import 'package:domain/entity/rewards_index_entity.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:plugin_platform/http/http_result.dart';
  4. import 'package:riverpod_annotation/riverpod_annotation.dart';
  5. import 'package:router/componentRouter/component_service_manager.dart';
  6. import 'package:shared/utils/log_utils.dart';
  7. import 'package:plugin_platform/engine/toast/toast_engine.dart';
  8. import 'package:widgets/load_state_layout.dart';
  9. import 'package:widgets/picker/option_pick_util.dart';
  10. import 'package:widgets/widget_export.dart';
  11. import './rewards_state.dart';
  12. import './rewards_repository.dart';
  13. part 'rewards_vm.g.dart';
  14. @riverpod
  15. class RewardsVm extends _$RewardsVm {
  16. late RewardsRepository rewardsRepository;
  17. bool _needShowPlaceholder = false; //是否展示LoadingView
  18. // Refresh 控制器
  19. final EasyRefreshController refreshController = EasyRefreshController(
  20. controlFinishRefresh: true, //允许刷新
  21. controlFinishLoad: false, //允许加载
  22. );
  23. RewardsState initState() {
  24. return RewardsState(
  25. list: RewardsIndexEntity()
  26. );
  27. }
  28. @override
  29. RewardsState build() {
  30. // 引入数据仓库
  31. rewardsRepository = ref.read(rewardsRepositoryProvider);
  32. // 初始化状态
  33. RewardsState state = initState();
  34. // 初始化列表数据
  35. return state;
  36. }
  37. // 初始化页面数据
  38. initPageData() {
  39. Log.d("----property_news_vm-----initPageData");
  40. getListData();
  41. }
  42. // 上拉加载
  43. // Future onLoadData() async {
  44. // Log.d("----property_news_vm-----initListData");
  45. // getListData();
  46. // }
  47. // 去新闻详情页
  48. void goNewsDetail(String item) {
  49. Log.d(item);
  50. // PropertyPage.startInstance(context: context, item: item);
  51. }
  52. //去社区页面
  53. void gotoCommunityPage() {
  54. ComponentServiceManager().communityService.startCommunityPage();
  55. }
  56. // 重试请求
  57. Future retryRequest() async {
  58. _needShowPlaceholder = true;
  59. getListData();
  60. }
  61. // 获取list 列表数据
  62. void getListData<T>() async {
  63. Log.d("加载listData数据---------------start-----");
  64. try {
  65. //请求网络
  66. Map<String, dynamic> params = {};
  67. Log.d("请求参数------$params");
  68. final result = await rewardsRepository.fetchPropertyNewsList(params);
  69. Log.d("请求完成结果------${result.data}");
  70. //校验成功失败
  71. if (result.isSuccess) {
  72. state = state.copyWith(list: result.data, loadingState: LoadState.State_Success);
  73. } else {
  74. String errorMessage = result.errorMsg!;
  75. state = state.copyWith(list: null, loadingState: LoadState.State_Error,errorMessage: errorMessage);
  76. ToastEngine.show(result.errorMsg ?? "Network Load Error");
  77. }
  78. } catch (e) {
  79. ToastEngine.show("Error: $e");
  80. }
  81. }
  82. // // 下拉刷新
  83. // Future refreshListData() async {
  84. // Log.d("----property_news_vm-----refreshListData ");
  85. // // await Future.delayed(const Duration(seconds: 2));
  86. // state = state.copyWith(curPage: 1, pageSize: 10);
  87. // // ref.invalidateSelf();
  88. // // ref.invalidate(propertyNewsVmProvider);
  89. // getListData();
  90. // }
  91. }