feat: subtitle stroke

Closes #446

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-03-15 12:36:54 +08:00
parent 98d52760b3
commit 0770f325ab
5 changed files with 55 additions and 6 deletions

View File

@@ -1042,6 +1042,7 @@ class _HeaderControlState extends State<HeaderControl> {
int subtitlePaddingH = widget.controller.subtitlePaddingH;
int subtitlePaddingB = widget.controller.subtitlePaddingB;
double subtitleBgOpaticy = widget.controller.subtitleBgOpaticy;
double subtitleStrokeWidth = widget.controller.subtitleStrokeWidth;
final sliderTheme = SliderThemeData(
trackShape: MSliderTrackShape(),
@@ -1057,6 +1058,15 @@ class _HeaderControlState extends State<HeaderControl> {
padding: isFullScreen ? 70 : null,
child: StatefulBuilder(
builder: (_, setState) {
void updateStrokeWidth(double val) {
subtitleStrokeWidth = val;
widget.controller
..subtitleStrokeWidth = subtitleStrokeWidth
..updateSubtitleStyle()
..putDanmakuSettings();
setState(() {});
}
void updateOpacity(double val) {
subtitleBgOpaticy = val;
widget.controller
@@ -1178,6 +1188,32 @@ class _HeaderControlState extends State<HeaderControl> {
),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('描边粗细 $subtitleStrokeWidth'),
resetBtn(1.5, () => updateStrokeWidth(1.5)),
],
),
Padding(
padding: const EdgeInsets.only(
top: 0,
bottom: 6,
left: 10,
right: 10,
),
child: SliderTheme(
data: sliderTheme,
child: Slider(
min: 0,
max: 3,
value: subtitleStrokeWidth,
divisions: 6,
label: '$subtitleStrokeWidth',
onChanged: updateStrokeWidth,
),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [

View File

@@ -290,6 +290,7 @@ class PlPlayerController {
late int subtitlePaddingB = GStorage.subtitlePaddingB;
late double subtitleBgOpaticy = GStorage.subtitleBgOpaticy;
late bool showVipDanmaku = GStorage.showVipDanmaku;
late double subtitleStrokeWidth = GStorage.subtitleStrokeWidth;
// 播放顺序相关
PlayRepeat playRepeat = PlayRepeat.pause;
@@ -313,7 +314,8 @@ class PlPlayerController {
right: subtitlePaddingH.toDouble(),
bottom: subtitlePaddingB.toDouble(),
),
textScaleFactor: MediaQuery.textScalerOf(Get.context!).scale(1),
textScaleFactor: 1,
strokeWidth: subtitleBgOpaticy == 0 ? subtitleStrokeWidth : null,
);
GlobalKey<VideoState> Function()? getPlayerKey;
@@ -1533,6 +1535,7 @@ class PlPlayerController {
setting.put(SettingBoxKey.subtitlePaddingH, subtitlePaddingH);
setting.put(SettingBoxKey.subtitlePaddingB, subtitlePaddingB);
setting.put(SettingBoxKey.subtitleBgOpaticy, subtitleBgOpaticy);
setting.put(SettingBoxKey.subtitleStrokeWidth, subtitleStrokeWidth);
}
Future<void> dispose({String type = 'single'}) async {

View File

@@ -307,6 +307,9 @@ class GStorage {
static double get subtitleBgOpaticy =>
setting.get(SettingBoxKey.subtitleBgOpaticy, defaultValue: 0.67);
static double get subtitleStrokeWidth =>
setting.get(SettingBoxKey.subtitleStrokeWidth, defaultValue: 1.5);
static bool get badCertificateCallback =>
setting.get(SettingBoxKey.badCertificateCallback, defaultValue: false);
@@ -630,6 +633,7 @@ class SettingBoxKey {
subtitlePaddingH = 'subtitlePaddingH',
subtitlePaddingB = 'subtitlePaddingB',
subtitleBgOpaticy = 'subtitleBgOpaticy',
subtitleStrokeWidth = 'subtitleStrokeWidth',
badCertificateCallback = 'badCertificateCallback',
continuePlayingPart = 'continuePlayingPart',
cdnSpeedTest = 'cdnSpeedTest',

View File

@@ -1210,10 +1210,11 @@ packages:
media_kit_video:
dependency: "direct main"
description:
name: media_kit_video
sha256: "2cc3b966679963ba25a4ce5b771e532a521ebde7c6aa20e9802bec95d9916c8f"
url: "https://pub.dev"
source: hosted
path: media_kit_video
ref: "version_1.2.5"
resolved-ref: cb6fd7e49c30433140001cd19e4e9a8e03c14249
url: "https://github.com/bggRGjQaUbCoE/media-kit.git"
source: git
version: "1.2.5"
meta:
dependency: transitive

View File

@@ -102,7 +102,12 @@ dependencies:
# 视频播放器
media_kit: ^1.1.11 # Primary package.
media_kit_video: ^1.2.5 # For video rendering.
# media_kit_video: ^1.2.5 # For video rendering.
media_kit_video:
git:
url: https://github.com/bggRGjQaUbCoE/media-kit.git
path: media_kit_video
ref: version_1.2.5
media_kit_libs_video: ^1.0.5
# 媒体通知