controller.dart 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import 'dart:async';
  2. import 'package:electronic_assistant/base/base_controller.dart';
  3. import 'package:electronic_assistant/data/repositories/talk_repository.dart';
  4. import 'package:electronic_assistant/module/talk/summary/view.dart';
  5. import 'package:electronic_assistant/module/talk/todo/view.dart';
  6. import 'package:electronic_assistant/resource/string.gen.dart';
  7. import 'package:electronic_assistant/utils/toast_util.dart';
  8. import 'package:get/get.dart';
  9. import '../../data/bean/agenda_list_all_bean.dart';
  10. import '../../data/bean/talks.dart';
  11. import '../../data/repositories/agenda_repository.dart';
  12. import 'original/view.dart';
  13. class TalkController extends BaseController {
  14. final Rxn<TalkBean> talkBean = Rxn();
  15. final isShowElectricLow = false.obs;
  16. final isAudioPlaying = false.obs;
  17. final audioProgressValue = 0.0.obs;
  18. final agendaAllList = <AgendaListAllBean>[].obs;
  19. final List<String> tabBeans = [
  20. StringName.talkTabSummary.tr,
  21. StringName.talkTabMyTask.tr,
  22. StringName.talkTabOriginal.tr
  23. ];
  24. StreamSubscription? _talkBeanListener;
  25. final pages = [const SummaryView(), const TodoView(), const OriginalView()];
  26. @override
  27. void onReady() {
  28. super.onReady();
  29. _initListener();
  30. _getArguments();
  31. }
  32. void _initListener() {
  33. _talkBeanListener = talkBean.listen((bean) {
  34. _dealTalkUpdate(bean);
  35. });
  36. }
  37. void _dealTalkUpdate(TalkBean? bean) {}
  38. void _getArguments() {
  39. if (Get.arguments is TalkBean) {
  40. talkBean.value = Get.arguments as TalkBean;
  41. }
  42. }
  43. void checkCanAnalyze() {
  44. String? id = talkBean.value?.id;
  45. double? duration = talkBean.value?.duration;
  46. if (id == null || duration == null) {
  47. return;
  48. }
  49. talkRepository.checkElectric(duration).then((data) {
  50. if (data.enough) {
  51. //提交分析
  52. _requestAnalyze();
  53. } else {
  54. ToastUtil.showToast(StringName.talkAnalyseLowToast.tr);
  55. isShowElectricLow.value = true;
  56. }
  57. }).catchError((error) {
  58. ToastUtil.showToast(error);
  59. });
  60. }
  61. void _requestAnalyze() {
  62. //提交文件
  63. }
  64. void goElectricStore() {
  65. //TODO 跳转至商店页
  66. }
  67. void refreshAgendaAllData() {
  68. String? id = talkBean.value?.id;
  69. if (id == null || agendaAllList.isNotEmpty) {
  70. return;
  71. }
  72. agendaRepository.agendaListAll(id).then((agenda) {
  73. if (agenda.list != null) {
  74. agendaAllList.value = agenda.list!;
  75. }
  76. });
  77. }
  78. @override
  79. void onClose() {
  80. super.onClose();
  81. _talkBeanListener?.cancel();
  82. }
  83. void updateProgress(double value) {
  84. audioProgressValue.value = value;
  85. }
  86. }