lxm 1 year ago
parent
commit
b70ba9531b
  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 speakerAllStarttime = (-1).obs;
RxInt speakerAllEndtime = (-1).obs;
int id = 0;
RxBool isLoading = true.obs;
@ -103,6 +106,13 @@ class MeetingDetailsController extends GetxController
playerController.setFinishMode(finishMode: FinishMode.pause);
playerController.onCurrentDurationChanged.listen((int 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) {
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
void initState() {
super.initState();
_controller.playerController.pausePlayer();
_controller.speakerAllStarttime.value = -1;
_controller.speakerAllEndtime.value = -1;
_getSpeakerList();
}
@override
void dispose() {
_controller.playerController.pausePlayer();
_controller.speakerAllStarttime.value = -1;
_controller.speakerAllEndtime.value = -1;
super.dispose();
}
void _getSpeakerList() {
_historySpeakerList = _storage.read("speaker_list") ?? [];
_speakerList = List.from(_historySpeakerList);
@ -269,77 +280,109 @@ class _SpeakerAllBottomSheetState extends State<SpeakerAllBottomSheet> {
item['list'].length,
(int idx) {
Map data = item['list'][idx];
return Padding(
padding: EdgeInsets.symmetric(horizontal: 10.w),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
return Obx(() {
bool isActive = false;
if (_controller.speakerAllStarttime.value ==
data['starttime'] &&
_controller.speakerAllEndtime.value ==
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: [
Icon(
Icons.play_circle,
color: Colors.red[400],
size: 15.w,
),
2.horizontalSpace,
Text(
DateUtil.formatDateMs(
data['starttime'],
format: 'HH:mm:ss',
isUtc: true,
),
style: TextStyle(
color: Colors.grey,
fontSize: 12.sp,
),
Row(
children: [
Icon(
isActive
? Icons.pause_circle
: Icons.play_circle,
color: Colors.red[400],
size: 15.w,
),
2.horizontalSpace,
Text(
DateUtil.formatDateMs(
data['starttime'],
format: 'HH:mm:ss',
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:
EdgeInsets.symmetric(horizontal: 2.w),
EdgeInsets.symmetric(vertical: 8.w),
child: Text(
'-',
data['content'],
overflow: TextOverflow.ellipsis,
maxLines: 2,
style: TextStyle(
color: Colors.grey,
color: isActive
? Colors.red
: Colors.grey[700],
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'])

Loading…
Cancel
Save