|
|
|
@ -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']) |
|
|
|
|