controller.dart 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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.dart';
  7. import 'package:get/get_rx/src/rx_types/rx_types.dart';
  8. import 'package:pull_to_refresh/pull_to_refresh.dart';
  9. import '../../data/api/response/example_info_response.dart';
  10. import '../../data/bean/talks.dart';
  11. import '../../data/repositories/config_repository.dart';
  12. import '../../resource/string.gen.dart';
  13. import '../../utils/toast_util.dart';
  14. class FilesController extends BaseController {
  15. final refreshController = RefreshController(initialRefresh: false);
  16. int page = 1;
  17. int pageSize = 10;
  18. @override
  19. void onReady() {
  20. super.onReady();
  21. onRefreshData();
  22. }
  23. RxList<TalkBean> get talkList => talkRepository.talkList;
  24. void requestTalkData({int page = 1}) async {
  25. if (accountRepository.isLogin.value) {
  26. talkRepository.requestTalkPagePaginate(page, pageSize).then((response) {
  27. debugPrint("requestTalkData-response-$response");
  28. if (talkRepository.talkList.length >= response.count) {
  29. debugPrint("requestTalkData-没有更多数据了");
  30. refreshController.loadNoData();
  31. } else {
  32. refreshController.loadComplete();
  33. }
  34. refreshController.refreshCompleted();
  35. }).catchError((error) {
  36. debugPrint("requestTalkData-catchError-$error");
  37. refreshController.loadFailed();
  38. refreshController.refreshFailed();
  39. ErrorHandler.toastError(error);
  40. });
  41. } else {
  42. ExampleInfoResponse exampleInfo = await configRepository.getExampleInfo();
  43. talkRepository.setTalkList(
  44. exampleInfo.talkInfoList != null ? exampleInfo.talkInfoList! : []);
  45. refreshController.refreshCompleted();
  46. refreshController.loadNoData();
  47. }
  48. }
  49. void onRefreshData() {
  50. page = 1;
  51. requestTalkData(page: page);
  52. }
  53. void onLoadMoreTalkData() {
  54. requestTalkData(page: ++page);
  55. }
  56. void requestName(String? newName, TalkBean bean) {
  57. talkRepository.talkRename(bean.id, newName).then((data) {
  58. bean.title.value = newName;
  59. ToastUtil.showToast(StringName.talkRenameSuccess.tr);
  60. }).catchError((error) {
  61. ErrorHandler.toastError(error, message: StringName.talkRenameFail.tr);
  62. });
  63. }
  64. void requestDelete(TalkBean item) {
  65. talkRepository.talkDelete(item.id).then((data) {
  66. onRefreshData();
  67. ToastUtil.showToast(StringName.talkDeleteSuccess.tr);
  68. }).catchError((error) {
  69. ErrorHandler.toastError(error, message: StringName.talkDeleteFail.tr);
  70. });
  71. }
  72. }