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 talkBean = TalkBean().obs;
  15. final analyseStatus = TalkStatus.notAnalysis.obs;
  16. // final isOriginalAnalysed = false.obs;
  17. final isShowElectricLow = false.obs;
  18. final isAudioPlaying = false.obs;
  19. final audioProgressValue = 0.0.obs;
  20. final agendaAllList = <AgendaListAllBean>[].obs;
  21. final List<String> tabBeans = [
  22. StringName.talkTabSummary.tr,
  23. StringName.talkTabMyTask.tr,
  24. StringName.talkTabOriginal.tr
  25. ];
  26. StreamSubscription<TalkBean>? _talkBeanListener;
  27. final pages = [const SummaryView(), const TodoView(), const OriginalView()];
  28. @override
  29. void onReady() {
  30. super.onReady();
  31. _initListener();
  32. _getArguments();
  33. }
  34. void _initListener() {
  35. _talkBeanListener = talkBean.listen((bean) {
  36. analyseStatus.value = bean.status ?? TalkStatus.notAnalysis;
  37. });
  38. }
  39. void _getArguments() {
  40. if (Get.arguments is TalkBean) {
  41. talkBean.value = Get.arguments as TalkBean;
  42. }
  43. }
  44. void checkCanAnalyze() {
  45. String? id = talkBean.value.id;
  46. double? duration = talkBean.value.duration;
  47. if (id == null || duration == null) {
  48. return;
  49. }
  50. talkRepository.checkElectric(duration).then((data) {
  51. if (data.enough) {
  52. //提交分析
  53. _requestAnalyze();
  54. } else {
  55. ToastUtil.showToast(StringName.talkAnalyseLowToast.tr);
  56. isShowElectricLow.value = true;
  57. }
  58. }).catchError((error) {
  59. ToastUtil.showToast(error);
  60. });
  61. }
  62. void _requestAnalyze() {
  63. //提交文件
  64. }
  65. void goElectricStore() {
  66. //TODO 跳转至商店页
  67. }
  68. void refreshAgendaAllData() {
  69. String? id = talkBean.value.id;
  70. if (id == null) {
  71. return;
  72. }
  73. agendaRepository.agendaListAll(id).then((agenda) {
  74. if (agenda.list != null) {
  75. agendaAllList.value = agenda.list!;
  76. }
  77. });
  78. }
  79. @override
  80. void onClose() {
  81. super.onClose();
  82. _talkBeanListener?.cancel();
  83. }
  84. void updateProgress(double value) {
  85. audioProgressValue.value = value;
  86. }
  87. }