Browse Source

修改点击文字播放音频

weicu
tanlongsheng 1 year ago
parent
commit
c2e54553fe
  1. 10
      lib/modules/meeting/controllers/meeting_details_controller.dart
  2. 161
      lib/modules/meeting/views/speaker_all_bottom_sheet.dart

10
lib/modules/meeting/controllers/meeting_details_controller.dart

@ -29,6 +29,9 @@ class MeetingDetailsController extends GetxController
RxInt currentDuration = 0.obs; RxInt currentDuration = 0.obs;
RxInt speakerAllStarttime = (-1).obs;
RxInt speakerAllEndtime = (-1).obs;
int id = 0; int id = 0;
RxBool isLoading = true.obs; RxBool isLoading = true.obs;
@ -103,6 +106,13 @@ class MeetingDetailsController extends GetxController
playerController.setFinishMode(finishMode: FinishMode.pause); playerController.setFinishMode(finishMode: FinishMode.pause);
playerController.onCurrentDurationChanged.listen((int position) { playerController.onCurrentDurationChanged.listen((int position) {
currentDuration.value = position; currentDuration.value = position;
if (speakerAllEndtime.value > 0) {
if (position >= speakerAllEndtime.value) {
playerController.pausePlayer();
speakerAllStarttime.value = -1;
speakerAllEndtime.value = -1;
}
}
}); });
if (meetingDetails.value.tasktype == 1) { if (meetingDetails.value.tasktype == 1) {
List speakerList = await SqfliteApi.getMeetingSpeaker(id); List speakerList = await SqfliteApi.getMeetingSpeaker(id);

161
lib/modules/meeting/views/speaker_all_bottom_sheet.dart

@ -27,9 +27,20 @@ class _SpeakerAllBottomSheetState extends State<SpeakerAllBottomSheet> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_controller.playerController.pausePlayer();
_controller.speakerAllStarttime.value = -1;
_controller.speakerAllEndtime.value = -1;
_getSpeakerList(); _getSpeakerList();
} }
@override
void dispose() {
_controller.playerController.pausePlayer();
_controller.speakerAllStarttime.value = -1;
_controller.speakerAllEndtime.value = -1;
super.dispose();
}
void _getSpeakerList() { void _getSpeakerList() {
_historySpeakerList = _storage.read("speaker_list") ?? []; _historySpeakerList = _storage.read("speaker_list") ?? [];
_speakerList = List.from(_historySpeakerList); _speakerList = List.from(_historySpeakerList);
@ -269,77 +280,109 @@ class _SpeakerAllBottomSheetState extends State<SpeakerAllBottomSheet> {
item['list'].length, item['list'].length,
(int idx) { (int idx) {
Map data = item['list'][idx]; Map data = item['list'][idx];
return Padding( return Obx(() {
padding: EdgeInsets.symmetric(horizontal: 10.w), bool isActive = false;
child: Column( if (_controller.speakerAllStarttime.value ==
crossAxisAlignment: CrossAxisAlignment.start, data['starttime'] &&
children: [ _controller.speakerAllEndtime.value ==
Row( data['endtime']) {
isActive = true;
}
return GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () {
if (isActive) {
_controller.playerController.pausePlayer();
_controller.speakerAllStarttime.value = -1;
_controller.speakerAllEndtime.value = -1;
} else {
_controller.speakerAllStarttime.value =
data['starttime'];
_controller.speakerAllEndtime.value =
data['endtime'];
_controller.playerController
.seekTo(data['starttime']);
_controller.playerController.startPlayer();
}
},
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 10.w),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Icon( Row(
Icons.play_circle, children: [
color: Colors.red[400], Icon(
size: 15.w, isActive
), ? Icons.pause_circle
2.horizontalSpace, : Icons.play_circle,
Text( color: Colors.red[400],
DateUtil.formatDateMs( size: 15.w,
data['starttime'], ),
format: 'HH:mm:ss', 2.horizontalSpace,
isUtc: true, Text(
), DateUtil.formatDateMs(
style: TextStyle( data['starttime'],
color: Colors.grey, format: 'HH:mm:ss',
fontSize: 12.sp, isUtc: true,
), ),
style: TextStyle(
color: Colors.grey,
fontSize: 12.sp,
),
),
Padding(
padding: EdgeInsets.symmetric(
horizontal: 2.w),
child: Text(
'-',
style: TextStyle(
color: Colors.grey,
fontSize: 12.sp,
),
),
),
Text(
DateUtil.formatDateMs(
data['endtime'],
format: 'HH:mm:ss',
isUtc: true,
),
style: TextStyle(
color: Colors.grey,
fontSize: 12.sp,
),
),
5.horizontalSpace,
Text(
'${(data['endtime'] - data['starttime']) / 1000}s',
style: TextStyle(
color: Colors.black54,
fontSize: 12.sp,
),
),
],
), ),
Padding( Padding(
padding: padding:
EdgeInsets.symmetric(horizontal: 2.w), EdgeInsets.symmetric(vertical: 8.w),
child: Text( child: Text(
'-', data['content'],
overflow: TextOverflow.ellipsis,
maxLines: 2,
style: TextStyle( style: TextStyle(
color: Colors.grey, color: isActive
? Colors.red
: Colors.grey[700],
fontSize: 12.sp, fontSize: 12.sp,
), ),
), ),
), ),
Text(
DateUtil.formatDateMs(
data['endtime'],
format: 'HH:mm:ss',
isUtc: true,
),
style: TextStyle(
color: Colors.grey,
fontSize: 12.sp,
),
),
5.horizontalSpace,
Text(
'${(data['endtime'] - data['starttime']) / 1000}s',
style: TextStyle(
color: Colors.black54,
fontSize: 12.sp,
),
),
], ],
), ),
Padding( ),
padding: EdgeInsets.symmetric(vertical: 8.w), );
child: Text( });
data['content'],
overflow: TextOverflow.ellipsis,
maxLines: 2,
style: TextStyle(
color: Colors.grey[700],
fontSize: 12.sp,
),
),
),
],
),
);
}, },
), ),
if (item['isOmit']) if (item['isOmit'])

Loading…
Cancel
Save