opt: 字幕类别补充
This commit is contained in:
@ -11,6 +11,12 @@ enum SubtitleType {
|
|||||||
enUS,
|
enUS,
|
||||||
// 中文繁体
|
// 中文繁体
|
||||||
zhTW,
|
zhTW,
|
||||||
|
//
|
||||||
|
en,
|
||||||
|
//
|
||||||
|
pt,
|
||||||
|
//
|
||||||
|
es,
|
||||||
}
|
}
|
||||||
|
|
||||||
extension SubtitleTypeExtension on SubtitleType {
|
extension SubtitleTypeExtension on SubtitleType {
|
||||||
@ -28,6 +34,12 @@ extension SubtitleTypeExtension on SubtitleType {
|
|||||||
return '英文(美国)';
|
return '英文(美国)';
|
||||||
case SubtitleType.zhTW:
|
case SubtitleType.zhTW:
|
||||||
return '中文(繁体)';
|
return '中文(繁体)';
|
||||||
|
case SubtitleType.en:
|
||||||
|
return '英文';
|
||||||
|
case SubtitleType.pt:
|
||||||
|
return '葡萄牙语';
|
||||||
|
case SubtitleType.es:
|
||||||
|
return '西班牙语';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -47,6 +59,12 @@ extension SubtitleIdExtension on SubtitleType {
|
|||||||
return 'en-US';
|
return 'en-US';
|
||||||
case SubtitleType.zhTW:
|
case SubtitleType.zhTW:
|
||||||
return 'zh-TW';
|
return 'zh-TW';
|
||||||
|
case SubtitleType.en:
|
||||||
|
return 'en';
|
||||||
|
case SubtitleType.pt:
|
||||||
|
return 'pt';
|
||||||
|
case SubtitleType.es:
|
||||||
|
return 'es';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -66,6 +84,12 @@ extension SubtitleCodeExtension on SubtitleType {
|
|||||||
return 5;
|
return 5;
|
||||||
case SubtitleType.zhTW:
|
case SubtitleType.zhTW:
|
||||||
return 6;
|
return 6;
|
||||||
|
case SubtitleType.en:
|
||||||
|
return 7;
|
||||||
|
case SubtitleType.pt:
|
||||||
|
return 8;
|
||||||
|
case SubtitleType.es:
|
||||||
|
return 9;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -433,42 +433,47 @@ class _HeaderControlState extends State<HeaderControl> {
|
|||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
title: const Text('选择字幕'),
|
title: const Text('选择字幕'),
|
||||||
contentPadding: const EdgeInsets.fromLTRB(0, 12, 0, 18),
|
contentPadding: const EdgeInsets.fromLTRB(0, 12, 0, 18),
|
||||||
content: StatefulBuilder(builder: (context, StateSetter setState) {
|
content: StatefulBuilder(
|
||||||
return len == 0
|
builder: (context, StateSetter setState) {
|
||||||
? const SizedBox(
|
return len == 0
|
||||||
height: 60,
|
? const SizedBox(
|
||||||
child: Center(
|
height: 60,
|
||||||
child: Text('没有字幕'),
|
child: Center(
|
||||||
),
|
child: Text('没有字幕'),
|
||||||
)
|
|
||||||
: Column(
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
children: [
|
|
||||||
RadioListTile(
|
|
||||||
value: -1,
|
|
||||||
title: const Text('关闭字幕'),
|
|
||||||
groupValue: tempThemeValue,
|
|
||||||
onChanged: (value) {
|
|
||||||
tempThemeValue = value!;
|
|
||||||
widget.controller?.toggleSubtitle(value);
|
|
||||||
Get.back();
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
...widget.videoDetailCtr!.subtitles
|
)
|
||||||
.map((e) => RadioListTile(
|
: SingleChildScrollView(
|
||||||
value: e.code,
|
child: Column(
|
||||||
title: Text(e.title),
|
mainAxisSize: MainAxisSize.min,
|
||||||
groupValue: tempThemeValue,
|
children: [
|
||||||
onChanged: (value) {
|
RadioListTile(
|
||||||
tempThemeValue = value!;
|
value: -1,
|
||||||
widget.controller?.toggleSubtitle(value);
|
title: const Text('关闭字幕'),
|
||||||
Get.back();
|
groupValue: tempThemeValue,
|
||||||
},
|
onChanged: (value) {
|
||||||
))
|
tempThemeValue = value!;
|
||||||
.toList(),
|
widget.controller?.toggleSubtitle(value);
|
||||||
],
|
Get.back();
|
||||||
);
|
},
|
||||||
}),
|
),
|
||||||
|
...widget.videoDetailCtr!.subtitles
|
||||||
|
.map((e) => RadioListTile(
|
||||||
|
value: e.code,
|
||||||
|
title: Text(e.title),
|
||||||
|
groupValue: tempThemeValue,
|
||||||
|
onChanged: (value) {
|
||||||
|
tempThemeValue = value!;
|
||||||
|
widget.controller
|
||||||
|
?.toggleSubtitle(value);
|
||||||
|
Get.back();
|
||||||
|
},
|
||||||
|
))
|
||||||
|
.toList(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user