// Author: fruit.com.cn import 'package:flutter/material.dart'; import '../../../core/theme/app_colors.dart'; import '../../../l10n/app_localizations.dart'; /// 清晰度档位面板:展示后端下发档位;HLS 多码率由播放器自动切换。 class QualitySheet extends StatelessWidget { const QualitySheet({ super.key, required this.qualities, this.selected = autoQuality, }); static const String autoQuality = 'AUTO'; final List qualities; final String selected; @override Widget build(BuildContext context) { final l10n = AppLocalizations.of(context)!; return SafeArea( child: Column( key: const Key('player-quality-sheet'), mainAxisSize: MainAxisSize.min, children: [ Padding( padding: const EdgeInsets.fromLTRB(20, 2, 20, 8), child: Align( alignment: Alignment.centerLeft, child: Text( l10n.playbackQuality, style: const TextStyle( color: AppColors.onSurface, fontSize: 14, fontWeight: FontWeight.w700, ), ), ), ), for (final quality in qualities) ListTile( key: Key('player-quality-$quality'), dense: true, title: Text( _label(l10n, quality), style: TextStyle( color: quality == selected ? AppColors.blue : AppColors.cream, fontSize: 13, fontWeight: quality == selected ? FontWeight.w700 : FontWeight.w500, ), ), trailing: quality == selected ? const Icon( Icons.check_rounded, color: AppColors.blue, size: 18, ) : null, ), Padding( padding: const EdgeInsets.fromLTRB(20, 6, 20, 14), child: Text( l10n.qualityAutoHint, style: const TextStyle(color: AppColors.muted, fontSize: 11), ), ), ], ), ); } String _label(AppLocalizations l10n, String quality) => quality == autoQuality ? l10n.qualityAuto : quality; }