|
|
|
@ -92,14 +92,22 @@ class MeetingDetailsView extends GetView<MeetingDetailsController> { |
|
|
|
}, |
|
|
|
), |
|
|
|
4.horizontalSpace, |
|
|
|
AudioFileWaveforms( |
|
|
|
size: Size(130.w, 30.w), |
|
|
|
playerController: controller.playerController, |
|
|
|
playerWaveStyle: PlayerWaveStyle( |
|
|
|
fixedWaveColor: Colors.grey[400]!, |
|
|
|
liveWaveColor: Colors.red, |
|
|
|
seekLineColor: Colors.red, |
|
|
|
scaleFactor: 100, |
|
|
|
GestureDetector( |
|
|
|
onTap: () { |
|
|
|
if (controller.isSpeakerText.value) return; |
|
|
|
controller.dragOffset.value = 210.w; |
|
|
|
controller.isTop.value = false; |
|
|
|
}, |
|
|
|
child: AudioFileWaveforms( |
|
|
|
size: Size(130.w, 30.w), |
|
|
|
playerController: controller.playerController, |
|
|
|
enableSeekGesture: false, |
|
|
|
playerWaveStyle: PlayerWaveStyle( |
|
|
|
fixedWaveColor: Colors.grey[400]!, |
|
|
|
liveWaveColor: Colors.red, |
|
|
|
seekLineColor: Colors.red, |
|
|
|
scaleFactor: 100, |
|
|
|
), |
|
|
|
), |
|
|
|
), |
|
|
|
], |
|
|
|
@ -203,19 +211,23 @@ class MeetingDetailsView extends GetView<MeetingDetailsController> { |
|
|
|
child: Column( |
|
|
|
children: [ |
|
|
|
_soundWave(isDarkMode), |
|
|
|
Container( |
|
|
|
padding: EdgeInsets.symmetric(horizontal: 8.w), |
|
|
|
margin: EdgeInsets.symmetric(vertical: 10.w), |
|
|
|
child: Obx( |
|
|
|
() => Row( |
|
|
|
children: [ |
|
|
|
_iconItem(Icons.summarize, '概述', 0), |
|
|
|
_iconItem(Icons.message, '转写', 1), |
|
|
|
_iconItem(Icons.article, '总结', 2), |
|
|
|
_iconItem(Icons.lan, '思维导图', 3), |
|
|
|
], |
|
|
|
), |
|
|
|
), |
|
|
|
Obx( |
|
|
|
() => !controller.isSpeakerText.value |
|
|
|
? Container( |
|
|
|
padding: EdgeInsets.symmetric(horizontal: 8.w), |
|
|
|
margin: EdgeInsets.symmetric(vertical: 10.w), |
|
|
|
child: Obx( |
|
|
|
() => Row( |
|
|
|
children: [ |
|
|
|
_iconItem(Icons.summarize, '概述', 0), |
|
|
|
_iconItem(Icons.message, '转写', 1), |
|
|
|
_iconItem(Icons.article, '总结', 2), |
|
|
|
_iconItem(Icons.lan, '思维导图', 3), |
|
|
|
], |
|
|
|
), |
|
|
|
), |
|
|
|
) |
|
|
|
: const SizedBox(), |
|
|
|
), |
|
|
|
], |
|
|
|
), |
|
|
|
@ -289,25 +301,20 @@ class MeetingDetailsView extends GetView<MeetingDetailsController> { |
|
|
|
child: Row( |
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween, |
|
|
|
children: [ |
|
|
|
StreamBuilder<int>( |
|
|
|
stream: controller |
|
|
|
.playerController.onCurrentDurationChanged, |
|
|
|
builder: (context, snapshot) { |
|
|
|
final position = snapshot.data ?? 0; |
|
|
|
return Text( |
|
|
|
DateUtil.formatDateMs( |
|
|
|
position, |
|
|
|
format: 'HH:mm:ss', |
|
|
|
isUtc: true, |
|
|
|
), |
|
|
|
style: TextStyle( |
|
|
|
color: isDarkMode |
|
|
|
? Colors.grey[400] |
|
|
|
: Colors.grey[500], |
|
|
|
fontSize: 12.sp, |
|
|
|
), |
|
|
|
); |
|
|
|
}, |
|
|
|
Obx( |
|
|
|
() => Text( |
|
|
|
DateUtil.formatDateMs( |
|
|
|
controller.currentDuration.value, |
|
|
|
format: 'HH:mm:ss', |
|
|
|
isUtc: true, |
|
|
|
), |
|
|
|
style: TextStyle( |
|
|
|
color: isDarkMode |
|
|
|
? Colors.grey[400] |
|
|
|
: Colors.grey[500], |
|
|
|
fontSize: 12.sp, |
|
|
|
), |
|
|
|
), |
|
|
|
), |
|
|
|
Obx( |
|
|
|
() => Text( |
|
|
|
@ -330,10 +337,20 @@ class MeetingDetailsView extends GetView<MeetingDetailsController> { |
|
|
|
Row( |
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly, |
|
|
|
children: [ |
|
|
|
Icon( |
|
|
|
Icons.replay_10, |
|
|
|
color: Colors.black, |
|
|
|
size: 30.w, |
|
|
|
GestureDetector( |
|
|
|
onTap: () { |
|
|
|
int progress = |
|
|
|
controller.currentDuration.value - 10000; |
|
|
|
if (progress < 0) { |
|
|
|
progress = 0; |
|
|
|
} |
|
|
|
controller.playerController.seekTo(progress); |
|
|
|
}, |
|
|
|
child: Icon( |
|
|
|
Icons.replay_10, |
|
|
|
color: Colors.black, |
|
|
|
size: 30.w, |
|
|
|
), |
|
|
|
), |
|
|
|
StreamBuilder<PlayerState>( |
|
|
|
stream: |
|
|
|
@ -356,10 +373,17 @@ class MeetingDetailsView extends GetView<MeetingDetailsController> { |
|
|
|
); |
|
|
|
}, |
|
|
|
), |
|
|
|
Icon( |
|
|
|
Icons.forward_10, |
|
|
|
color: Colors.black, |
|
|
|
size: 30.w, |
|
|
|
GestureDetector( |
|
|
|
onTap: () { |
|
|
|
int progress = |
|
|
|
controller.currentDuration.value + 10000; |
|
|
|
controller.playerController.seekTo(progress); |
|
|
|
}, |
|
|
|
child: Icon( |
|
|
|
Icons.forward_10, |
|
|
|
color: Colors.black, |
|
|
|
size: 30.w, |
|
|
|
), |
|
|
|
), |
|
|
|
], |
|
|
|
), |
|
|
|
@ -382,9 +406,6 @@ class MeetingDetailsView extends GetView<MeetingDetailsController> { |
|
|
|
onTap: () { |
|
|
|
if (isActive) return; |
|
|
|
controller.tabController.index = index; |
|
|
|
controller.isSpeakerText.value = false; |
|
|
|
controller.editSpeakerTextId.value = 0; |
|
|
|
controller.editSpeakerTextList = []; |
|
|
|
}, |
|
|
|
child: Container( |
|
|
|
height: 45.w, |
|
|
|
|