|
@@ -1,4 +1,5 @@
|
|
|
import 'dart:async';
|
|
import 'dart:async';
|
|
|
|
|
+import 'dart:ffi';
|
|
|
import 'dart:io';
|
|
import 'dart:io';
|
|
|
|
|
|
|
|
import 'package:connectivity_plus/connectivity_plus.dart';
|
|
import 'package:connectivity_plus/connectivity_plus.dart';
|
|
@@ -55,6 +56,9 @@ class TalkController extends BaseController {
|
|
|
|
|
|
|
|
final Rxn<TalkBean> talkBean = Rxn();
|
|
final Rxn<TalkBean> talkBean = Rxn();
|
|
|
|
|
|
|
|
|
|
+ StreamSubscription? _talkUploadListener;
|
|
|
|
|
+ final RxDouble uploadProgress = RxDouble(0);
|
|
|
|
|
+
|
|
|
final isShowElectricLow = false.obs;
|
|
final isShowElectricLow = false.obs;
|
|
|
|
|
|
|
|
bool isAudioLoading = false;
|
|
bool isAudioLoading = false;
|
|
@@ -112,6 +116,7 @@ class TalkController extends BaseController {
|
|
|
return _agendaNameController!;
|
|
return _agendaNameController!;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ String? paramId;
|
|
|
String? eventTag;
|
|
String? eventTag;
|
|
|
|
|
|
|
|
bool isLocalFileHas = false;
|
|
bool isLocalFileHas = false;
|
|
@@ -121,17 +126,11 @@ class TalkController extends BaseController {
|
|
|
@override
|
|
@override
|
|
|
void onReady() {
|
|
void onReady() {
|
|
|
super.onReady();
|
|
super.onReady();
|
|
|
-
|
|
|
|
|
_initAudioPlayer();
|
|
_initAudioPlayer();
|
|
|
- _initListener();
|
|
|
|
|
_getArguments();
|
|
_getArguments();
|
|
|
eventReport(EventId.event_101001, params: {EventId.id: eventTag});
|
|
eventReport(EventId.event_101001, params: {EventId.id: eventTag});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- RxDouble getUploadingProgress() {
|
|
|
|
|
- return talkRepository.getUploadProgress(talkBean.value!.id);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
void eventReport(String eventId, {Map<String, dynamic>? params}) {
|
|
void eventReport(String eventId, {Map<String, dynamic>? params}) {
|
|
|
if (talkBean.value == null || talkBean.value?.isExample == true) {
|
|
if (talkBean.value == null || talkBean.value?.isExample == true) {
|
|
|
return;
|
|
return;
|
|
@@ -177,24 +176,27 @@ class TalkController extends BaseController {
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- void _initListener() {
|
|
|
|
|
- _talkBeanListener = talkBean.listen((bean) {
|
|
|
|
|
- _dealTalkUpdate(bean);
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- void _dealTalkUpdate(TalkBean? bean) async {
|
|
|
|
|
- String? id = talkBean.value?.id;
|
|
|
|
|
|
|
+ void _dealTalk(TalkBean? bean) async {
|
|
|
|
|
+ String? id = bean?.id;
|
|
|
if (id == null) {
|
|
if (id == null) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- if (talkRepository.isUploadingTalk(id) &&
|
|
|
|
|
- talkBean.value?.status.value == TalkStatus.notAnalysis) {
|
|
|
|
|
|
|
+ _loadAudioFile(bean);
|
|
|
|
|
+ if (bean?.status.value == TalkStatus.notAnalysis) {
|
|
|
|
|
+ setUploadingProgress(id);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (bean?.status.value == TalkStatus.notAnalysis &&
|
|
|
|
|
+ talkRepository.isUploadingTalk(id)) {
|
|
|
isUploading.value = true;
|
|
isUploading.value = true;
|
|
|
} else {
|
|
} else {
|
|
|
isUploading.value = false;
|
|
isUploading.value = false;
|
|
|
}
|
|
}
|
|
|
- _loadAudioFile(bean);
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void setUploadingProgress(String id) {
|
|
|
|
|
+ talkRepository.getUploadProgress(id).listen((progress) {
|
|
|
|
|
+ uploadProgress.value = (progress * 20).toFormattedDouble(1);
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Future<void> _loadAudioFile(TalkBean? bean, {bool? loadPlay}) async {
|
|
Future<void> _loadAudioFile(TalkBean? bean, {bool? loadPlay}) async {
|
|
@@ -226,11 +228,13 @@ class TalkController extends BaseController {
|
|
|
TalkBean? bean = parameters?[argumentItem];
|
|
TalkBean? bean = parameters?[argumentItem];
|
|
|
if (bean != null) {
|
|
if (bean != null) {
|
|
|
talkBean.value = bean;
|
|
talkBean.value = bean;
|
|
|
|
|
+ _dealTalk(bean);
|
|
|
} else {
|
|
} else {
|
|
|
- String? talkId = parameters?[argumentTalkId];
|
|
|
|
|
- if (talkId != null) {
|
|
|
|
|
- talkRepository.talkInfo(talkId).then((data) {
|
|
|
|
|
|
|
+ paramId = parameters?[argumentTalkId];
|
|
|
|
|
+ if (paramId != null) {
|
|
|
|
|
+ talkRepository.talkInfo(paramId!).then((data) {
|
|
|
talkBean.value = data.talkInfo;
|
|
talkBean.value = data.talkInfo;
|
|
|
|
|
+ _dealTalk(data.talkInfo);
|
|
|
}).catchError((error) {
|
|
}).catchError((error) {
|
|
|
ErrorHandler.toastError(error);
|
|
ErrorHandler.toastError(error);
|
|
|
});
|
|
});
|
|
@@ -390,7 +394,7 @@ class TalkController extends BaseController {
|
|
|
isShowElectricLow.value = true;
|
|
isShowElectricLow.value = true;
|
|
|
}
|
|
}
|
|
|
}).catchError((error) {
|
|
}).catchError((error) {
|
|
|
- ToastUtil.showToast(error);
|
|
|
|
|
|
|
+ ErrorHandler.toastError(error);
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -405,6 +409,9 @@ class TalkController extends BaseController {
|
|
|
WakelockPlus.enable();
|
|
WakelockPlus.enable();
|
|
|
talkRepository.uploadTalkFile(talkId, duration, file).then((taskId) {
|
|
talkRepository.uploadTalkFile(talkId, duration, file).then((taskId) {
|
|
|
isUploadedFile = true;
|
|
isUploadedFile = true;
|
|
|
|
|
+ isUploading.value = false;
|
|
|
|
|
+ talkBean.value?.progressContent.value = '录音上传中,请勿关闭小听';
|
|
|
|
|
+ talkBean.value?.progress.value = 20;
|
|
|
talkBean.value?.status.value = TalkStatus.analysing;
|
|
talkBean.value?.status.value = TalkStatus.analysing;
|
|
|
taskRepository.addTask(taskId);
|
|
taskRepository.addTask(taskId);
|
|
|
}).catchError((error) {
|
|
}).catchError((error) {
|
|
@@ -611,6 +618,7 @@ class TalkController extends BaseController {
|
|
|
@override
|
|
@override
|
|
|
void onClose() {
|
|
void onClose() {
|
|
|
super.onClose();
|
|
super.onClose();
|
|
|
|
|
+ _talkUploadListener?.cancel();
|
|
|
_talkBeanListener?.cancel();
|
|
_talkBeanListener?.cancel();
|
|
|
_audioPlayer.dispose();
|
|
_audioPlayer.dispose();
|
|
|
_agendaContentController?.dispose();
|
|
_agendaContentController?.dispose();
|