opt: danmaku fontsize

Closes #13

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2024-11-26 21:23:27 +08:00
parent d61147c106
commit d2852ed3e4
4 changed files with 23 additions and 3 deletions

View File

@@ -12,11 +12,13 @@ import 'package:PiliPalaX/utils/storage.dart';
class PlDanmaku extends StatefulWidget { class PlDanmaku extends StatefulWidget {
final int cid; final int cid;
final PlPlayerController playerController; final PlPlayerController playerController;
final bool? isPipMode;
const PlDanmaku({ const PlDanmaku({
super.key, super.key,
required this.cid, required this.cid,
required this.playerController, required this.playerController,
this.isPipMode,
}); });
@override @override
@@ -39,6 +41,7 @@ class _PlDanmakuState extends State<PlDanmaku> with WidgetsBindingObserver {
late int fontWeight; late int fontWeight;
int latestAddedPosition = -1; int latestAddedPosition = -1;
bool showDanmaku = true; bool showDanmaku = true;
bool? _isFullScreen;
@override @override
void didChangeAppLifecycleState(AppLifecycleState state) { void didChangeAppLifecycleState(AppLifecycleState state) {
@@ -60,6 +63,7 @@ class _PlDanmakuState extends State<PlDanmaku> with WidgetsBindingObserver {
widget.cid, widget.cid,
widget.playerController.danmakuWeight, widget.playerController.danmakuWeight,
widget.playerController.danmakuFilterRule); widget.playerController.danmakuFilterRule);
if (mounted) { if (mounted) {
playerController = widget.playerController; playerController = widget.playerController;
if (enableShowDanmaku || playerController.isOpenDanmu.value) { if (enableShowDanmaku || playerController.isOpenDanmu.value) {
@@ -78,6 +82,20 @@ class _PlDanmakuState extends State<PlDanmaku> with WidgetsBindingObserver {
playerController.position.value.inMilliseconds); playerController.position.value.inMilliseconds);
} }
}); });
playerController.isFullScreen.listen((isFullScreen) {
if (isFullScreen != _isFullScreen) {
_isFullScreen = isFullScreen;
if (_controller != null) {
_controller!.updateOption(
_controller!.option.copyWith(
fontSize: isFullScreen == false || widget.isPipMode == true
? 15 * fontSizeVal
: 15 * fontSizeVal * 1.2,
),
);
}
}
});
blockTypes = playerController.blockTypes; blockTypes = playerController.blockTypes;
showArea = playerController.showArea; showArea = playerController.showArea;
opacityVal = playerController.opacityVal; opacityVal = playerController.opacityVal;
@@ -152,7 +170,10 @@ class _PlDanmakuState extends State<PlDanmaku> with WidgetsBindingObserver {
playerController.danmakuController = _controller = e; playerController.danmakuController = _controller = e;
}, },
option: DanmakuOption( option: DanmakuOption(
fontSize: 15 * fontSizeVal, fontSize: playerController.isFullScreen.value == false ||
widget.isPipMode == true
? 15 * fontSizeVal
: 15 * fontSizeVal * 1.2,
fontWeight: fontWeight, fontWeight: fontWeight,
area: showArea, area: showArea,
opacity: opacityVal, opacity: opacityVal,

View File

@@ -1,4 +1,3 @@
import 'package:PiliPalaX/utils/extension.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';

View File

@@ -2,7 +2,6 @@ import 'dart:async';
import 'dart:io'; import 'dart:io';
import 'dart:math'; import 'dart:math';
import 'package:PiliPalaX/common/constants.dart'; import 'package:PiliPalaX/common/constants.dart';
import 'package:PiliPalaX/common/widgets/article_content.dart';
import 'package:PiliPalaX/common/widgets/icon_button.dart'; import 'package:PiliPalaX/common/widgets/icon_button.dart';
import 'package:PiliPalaX/common/widgets/loading_widget.dart'; import 'package:PiliPalaX/common/widgets/loading_widget.dart';
import 'package:PiliPalaX/common/widgets/pair.dart'; import 'package:PiliPalaX/common/widgets/pair.dart';

View File

@@ -907,6 +907,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
() => PlDanmaku( () => PlDanmaku(
key: Key(videoDetailController.danmakuCid.value key: Key(videoDetailController.danmakuCid.value
.toString()), .toString()),
isPipMode: true,
cid: videoDetailController.danmakuCid.value, cid: videoDetailController.danmakuCid.value,
playerController: plPlayerController!, playerController: plPlayerController!,
), ),