showQualityPanel static method
Future<void>
showQualityPanel({
- required BuildContext context,
- required AliPlayerWidgetController controller,
显示清晰度面板(横屏底部按钮触发)
使用右侧滑入面板展示清晰度选项
Implementation
static Future<void> showQualityPanel({
required BuildContext context,
required AliPlayerWidgetController controller,
}) {
final trackInfoList = controller.trackInfoListNotifier.value;
final List<String> qualities =
trackInfoList != null && trackInfoList.isNotEmpty
? TrackInfoUtil.getQualitiesFromTrackInfos(trackInfoList)
: [];
// 如果是单码率流,显示 AUTO
final List<String> items = qualities.length == 1 ? ['AUTO'] : qualities;
// 获取当前清晰度
final currentTrackInfo = controller.currentTrackInfoNotifier.value;
final currentQuality = currentTrackInfo != null
? TrackInfoUtil.getQuality(currentTrackInfo)
: (items.isNotEmpty ? items.first : 'AUTO');
final initialIndex = items.indexOf(currentQuality).clamp(0, items.length - 1);
return showRightSettingPanel<String>(
context: context,
panel: RightWheelSettingPanel(
items,
initialIndex: initialIndex,
onSelected: (value) {
Navigator.of(context).pop(value);
},
),
).then((value) {
if (value != null && value != 'AUTO' && trackInfoList != null) {
final selectedTrack = trackInfoList.firstWhere(
(track) => TrackInfoUtil.getQuality(track) == value,
orElse: () => trackInfoList.first,
);
controller.selectTrack(selectedTrack);
}
});
}