controller.dart 2.7 KB

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