Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-06-13 10:17:35 +08:00
parent b02e4253f1
commit 3fae4ef632
8 changed files with 177 additions and 195 deletions

View File

@@ -644,7 +644,7 @@ class VideoDetailController extends GetxController
await Get.key.currentState!.push(
PublishRoute(
pageBuilder: (buildContext, animation, secondaryAnimation) {
return SendDanmakuPanel(
final child = SendDanmakuPanel(
cid: cid.value,
bvid: bvid,
progress: plPlayerController.position.inMilliseconds,
@@ -654,10 +654,13 @@ class VideoDetailController extends GetxController
savedDanmaku = null;
plPlayerController.danmakuController?.addDanmaku(danmakuModel);
},
darkVideoPage: plPlayerController.darkVideoPage,
dmConfig: dmConfig,
onSaveDmConfig: (dmConfig) => this.dmConfig = dmConfig,
);
if (plPlayerController.darkVideoPage) {
return Theme(data: ThemeUtils.darkTheme, child: child);
}
return child;
},
),
);
@@ -1022,22 +1025,16 @@ class VideoDetailController extends GetxController
);
}
if (plPlayerController.isFullScreen.value || showVideoSheet) {
final child = PostPanel(
enableSlide: false,
videoDetailController: this,
plPlayerController: plPlayerController,
);
PageUtils.showVideoBottomSheet(
context,
child: plPlayerController.darkVideoPage
? Theme(
data: ThemeUtils.darkTheme,
child: PostPanel(
enableSlide: false,
videoDetailController: this,
plPlayerController: plPlayerController,
),
)
: PostPanel(
enableSlide: false,
videoDetailController: this,
plPlayerController: plPlayerController,
),
? Theme(data: ThemeUtils.darkTheme, child: child)
: child,
);
} else {
childKey.currentState?.showBottomSheet(
@@ -1349,26 +1346,18 @@ class VideoDetailController extends GetxController
).videoDetail.value.title;
} catch (_) {}
if (plPlayerController.isFullScreen.value || showVideoSheet) {
final child = NoteListPage(
oid: aid,
enableSlide: false,
heroTag: heroTag,
isStein: graphVersion != null,
title: title,
);
PageUtils.showVideoBottomSheet(
context,
child: plPlayerController.darkVideoPage
? Theme(
data: ThemeUtils.darkTheme,
child: NoteListPage(
oid: aid,
enableSlide: false,
heroTag: heroTag,
isStein: graphVersion != null,
title: title,
),
)
: NoteListPage(
oid: aid,
enableSlide: false,
heroTag: heroTag,
isStein: graphVersion != null,
title: title,
),
? Theme(data: ThemeUtils.darkTheme, child: child)
: child,
);
} else {
childKey.currentState?.showBottomSheet(

View File

@@ -10,7 +10,6 @@ import 'package:PiliPlus/pages/danmaku/danmaku_model.dart';
import 'package:PiliPlus/pages/setting/slide_color_picker.dart';
import 'package:PiliPlus/plugin/pl_player/controller.dart';
import 'package:PiliPlus/utils/storage_pref.dart';
import 'package:PiliPlus/utils/theme_utils.dart';
import 'package:canvas_danmaku/models/danmaku_content_item.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show LengthLimitingTextInputFormatter;
@@ -24,7 +23,6 @@ class SendDanmakuPanel extends CommonTextPubPage {
final dynamic progress;
final ValueChanged<DanmakuContentItem<DanmakuExtra>> onSuccess;
final bool darkVideoPage;
// config
final ({int? mode, int? fontSize, Color? color})? dmConfig;
@@ -38,7 +36,6 @@ class SendDanmakuPanel extends CommonTextPubPage {
this.bvid,
this.progress,
required this.onSuccess,
required this.darkVideoPage,
this.dmConfig,
this.onSaveDmConfig,
});
@@ -138,14 +135,14 @@ class _SendDanmakuPanelState extends CommonTextPubPageState<SendDanmakuPanel> {
@override
void didChangeDependencies() {
super.didChangeDependencies();
themeData = widget.darkVideoPage ? ThemeUtils.darkTheme : Theme.of(context);
themeData = Theme.of(context);
}
late ThemeData themeData;
@override
Widget build(BuildContext context) {
Widget child = ViewSafeArea(
return ViewSafeArea(
child: Align(
alignment: Alignment.bottomCenter,
child: Container(
@@ -164,7 +161,6 @@ class _SendDanmakuPanelState extends CommonTextPubPageState<SendDanmakuPanel> {
),
),
);
return widget.darkVideoPage ? Theme(data: themeData, child: child) : child;
}
@override

View File

@@ -1983,14 +1983,12 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
},
);
if (isFullScreen || videoDetailController.showVideoSheet) {
final child = listSheetContent(enableSlide: false);
PageUtils.showVideoBottomSheet(
context,
child: videoDetailController.plPlayerController.darkVideoPage
? Theme(
data: themeData,
child: listSheetContent(enableSlide: false),
)
: listSheetContent(enableSlide: false),
? Theme(data: themeData, child: child)
: child,
);
} else {
videoDetailController.childKey.currentState?.showBottomSheet(
@@ -2062,22 +2060,16 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
void showViewPoints() {
if (isFullScreen || videoDetailController.showVideoSheet) {
final child = ViewPointsPage(
enableSlide: false,
videoDetailController: videoDetailController,
plPlayerController: plPlayerController,
);
PageUtils.showVideoBottomSheet(
context,
child: videoDetailController.plPlayerController.darkVideoPage
? Theme(
data: themeData,
child: ViewPointsPage(
enableSlide: false,
videoDetailController: videoDetailController,
plPlayerController: plPlayerController,
),
)
: ViewPointsPage(
enableSlide: false,
videoDetailController: videoDetailController,
plPlayerController: plPlayerController,
),
? Theme(data: themeData, child: child)
: child,
);
} else {
videoDetailController.childKey.currentState?.showBottomSheet(

View File

@@ -4,6 +4,7 @@ import 'package:PiliPlus/plugin/pl_player/controller.dart';
import 'package:PiliPlus/plugin/pl_player/utils/danmaku_options.dart';
import 'package:PiliPlus/utils/extension/num_ext.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/theme_utils.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -12,6 +13,13 @@ mixin HeaderMixin<T extends StatefulWidget> on State<T> {
bool get isFullScreen => plPlayerController.isFullScreen.value;
ThemeData? get theme {
if (plPlayerController.darkVideoPage) {
return ThemeUtils.darkTheme;
}
return null;
}
Future<void>? showBottomSheet(
StatefulWidgetBuilder builder, {
ValueGetter<EdgeInsets>? padding,
@@ -21,12 +29,16 @@ mixin HeaderMixin<T extends StatefulWidget> on State<T> {
maxWidth: 512,
padding: padding,
child: StatefulBuilder(
builder: (context, setState) => plPlayerController.darkVideoPage
? Theme(
data: Theme.of(this.context),
child: builder(this.context, setState),
)
: builder(context, setState),
builder: (context, setState) {
final theme = this.theme;
if (theme != null) {
return Theme(
data: theme,
child: builder(this.context, setState),
);
}
return builder(context, setState);
},
),
);
}