controller.dart 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import 'package:electronic_assistant/base/base_controller.dart';
  2. import 'package:electronic_assistant/data/repositories/account_repository.dart';
  3. import 'package:electronic_assistant/data/repositories/talk_repository.dart';
  4. import 'package:electronic_assistant/utils/error_handler.dart';
  5. import 'package:flutter/widgets.dart';
  6. import 'package:get/get_rx/src/rx_types/rx_types.dart';
  7. import 'package:pull_to_refresh/pull_to_refresh.dart';
  8. import '../../data/api/response/example_info_response.dart';
  9. import '../../data/bean/talks.dart';
  10. import '../../data/repositories/config_repository.dart';
  11. class FilesController extends BaseController {
  12. final refreshController = RefreshController(initialRefresh: false);
  13. int page = 1;
  14. int pageSize = 10;
  15. @override
  16. void onReady() {
  17. super.onReady();
  18. onRefreshData();
  19. }
  20. RxList<TalkBean> get talkList => talkRepository.talkList;
  21. void requestTalkData({int page = 1}) async {
  22. if (accountRepository.isLogin.value) {
  23. talkRepository.requestTalkPagePaginate(page, pageSize).then((response) {
  24. debugPrint("requestTalkData-response-$response");
  25. if (talkRepository.talkList.length >= response.count) {
  26. debugPrint("requestTalkData-没有更多数据了");
  27. refreshController.loadNoData();
  28. } else {
  29. refreshController.loadComplete();
  30. }
  31. refreshController.refreshCompleted();
  32. }).catchError((error) {
  33. debugPrint("requestTalkData-catchError-$error");
  34. refreshController.loadFailed();
  35. refreshController.refreshFailed();
  36. ErrorHandler.toastError(error);
  37. });
  38. } else {
  39. ExampleInfoResponse exampleInfo = await configRepository.getExampleInfo();
  40. talkRepository.setTalkList(
  41. exampleInfo.talkInfoList != null ? exampleInfo.talkInfoList! : []);
  42. refreshController.refreshCompleted();
  43. refreshController.loadNoData();
  44. }
  45. }
  46. void onRefreshData() {
  47. page = 1;
  48. requestTalkData(page: page);
  49. }
  50. void onLoadMoreTalkData() {
  51. requestTalkData(page: ++page);
  52. }
  53. }