controller.dart 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import 'package:electronic_assistant/base/base_controller.dart';
  2. import 'package:electronic_assistant/data/bean/agenda.dart';
  3. import 'package:electronic_assistant/data/bean/talks.dart';
  4. import 'package:electronic_assistant/data/repositories/agenda_repository.dart';
  5. import 'package:electronic_assistant/data/repositories/talk_repository.dart';
  6. import 'package:electronic_assistant/module/chat/view.dart';
  7. import 'package:electronic_assistant/utils/error_handler.dart';
  8. import 'package:flutter/cupertino.dart';
  9. import 'package:get/get.dart';
  10. import 'package:get/get_core/src/get_main.dart';
  11. import '../../../data/api/request/agenda_update_bean.dart';
  12. class AgendaDetailController extends BaseController {
  13. final Rxn<Agenda> detailBean = Rxn<Agenda>();
  14. final Rxn<TalkBean> talkBean = Rxn<TalkBean>();
  15. final etFieldController = TextEditingController();
  16. @override
  17. void onInit() {
  18. super.onInit();
  19. _getArguments();
  20. }
  21. void _getArguments() {
  22. if (Get.arguments is Agenda) {
  23. detailBean.value = Get.arguments as Agenda;
  24. requestTalkBeanData();
  25. }
  26. }
  27. void requestTalkBeanData() {
  28. String? talkId = detailBean.value?.talkId;
  29. if (talkId == null) {
  30. return;
  31. }
  32. talkRepository.talkInfo(talkId).then((data) {
  33. talkBean.value = data.talkInfo;
  34. }).catchError((error) {
  35. ErrorHandler.toastError(error);
  36. });
  37. }
  38. void onGoChatClick() {
  39. if (detailBean.value == null) {
  40. return;
  41. }
  42. if (talkBean.value == null) {
  43. ChatPage.startByTalkId(detailBean.value!.talkId,
  44. agenda: detailBean.value!);
  45. } else {
  46. ChatPage.startByTalk(talkBean.value!, agenda: detailBean.value!);
  47. }
  48. }
  49. void onTaskDoneClick() {
  50. if (detailBean.value == null) {
  51. return;
  52. }
  53. agendaRepository.agendaFinish(detailBean.value!.id, true).then((data) {
  54. agendaRepository.requestHomeAgendaData();
  55. Get.back();
  56. }).catchError((error) {
  57. ErrorHandler.toastError(error);
  58. });
  59. }
  60. void onEditAgenda(String newContent) {
  61. if (detailBean.value == null) {
  62. return;
  63. }
  64. agendaRepository.agendaUpdate(detailBean.value!.talkId, [
  65. AgendaUpdateBean(detailBean.value!.id, detailBean.value!.name, newContent)
  66. ]).then((data) {
  67. detailBean.value!.content = newContent;
  68. etFieldController.clear();
  69. }).catchError((error) {
  70. ErrorHandler.toastError(error);
  71. });
  72. }
  73. @override
  74. void onClose() {
  75. super.onClose();
  76. etFieldController.dispose();
  77. }
  78. }