mod: video tabbarview

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-02-24 21:51:28 +08:00
parent 0ef85f2551
commit 0e69e23606
4 changed files with 42 additions and 21 deletions

View File

@@ -1,32 +1,54 @@
import 'package:PiliPlus/utils/storage.dart';
import 'package:flutter/material.dart';
Widget videoTabBarView({
required List<Widget> children,
TabController? controller,
}) =>
TabBarView(
physics: const CustomTabBarViewClampingScrollPhysics(),
controller: controller,
children: children,
);
Widget tabBarView({
required List<Widget> children,
TabController? controller,
}) =>
TabBarView(
physics: customTabBarViewScrollPhysics,
physics: const CustomTabBarViewScrollPhysics(),
controller: controller,
children: children,
);
class CustomTabBarViewScrollPhysics extends ScrollPhysics {
CustomTabBarViewScrollPhysics({super.parent});
const CustomTabBarViewScrollPhysics({super.parent});
@override
CustomTabBarViewScrollPhysics applyTo(ScrollPhysics? ancestor) {
return CustomTabBarViewScrollPhysics(parent: buildParent(ancestor)!);
return CustomTabBarViewScrollPhysics(parent: buildParent(ancestor));
}
final springDescription = GStorage.springDescription;
@override
SpringDescription get spring => SpringDescription(
mass: springDescription[0],
stiffness: springDescription[1],
damping: springDescription[2],
mass: GStorage.springDescription[0],
stiffness: GStorage.springDescription[1],
damping: GStorage.springDescription[2],
);
}
final customTabBarViewScrollPhysics = CustomTabBarViewScrollPhysics();
class CustomTabBarViewClampingScrollPhysics extends ClampingScrollPhysics {
const CustomTabBarViewClampingScrollPhysics({super.parent});
@override
CustomTabBarViewClampingScrollPhysics applyTo(ScrollPhysics? ancestor) {
return CustomTabBarViewClampingScrollPhysics(parent: buildParent(ancestor));
}
@override
SpringDescription get spring => SpringDescription(
mass: GStorage.springDescription[0],
stiffness: GStorage.springDescription[1],
damping: GStorage.springDescription[2],
);
}

View File

@@ -587,14 +587,13 @@ List<SettingsModel> get styleSettings => [
TextButton(
onPressed: () async {
Get.back();
late final spring = GStorage.springDescription;
await GStorage.setting.put(
SettingBoxKey.springDescription,
List<double>.generate(
3,
(i) =>
double.tryParse(springDescription[i]) ??
spring[i],
GStorage.springDescription[i],
),
);
SmartDialog.showToast('设置成功,重启生效');

View File

@@ -624,7 +624,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
showReply: videoDetailController.showReply,
),
Expanded(
child: tabBarView(
child: videoTabBarView(
controller: videoDetailController.tabCtr,
children: [
videoIntro(),
@@ -674,7 +674,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
children: [
buildTabbar(showReply: videoDetailController.showReply),
Expanded(
child: tabBarView(
child: videoTabBarView(
controller: videoDetailController.tabCtr,
children: [
videoIntro(),
@@ -773,7 +773,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
showReply: videoDetailController.showReply,
),
Expanded(
child: tabBarView(
child: videoTabBarView(
controller: videoDetailController.tabCtr,
children: [
if (videoDetailController.showReply)
@@ -882,7 +882,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
showReply: videoDetailController.showReply,
),
Expanded(
child: tabBarView(
child: videoTabBarView(
controller: videoDetailController.tabCtr,
children: [
if (videoDetailController.videoType ==

View File

@@ -422,7 +422,7 @@ class GStorage {
// ratio: 1.1,
// );
// damping = ratio * 2.0 * math.sqrt(mass * stiffness)
static List<double> get springDescription => List<double>.from(
static final List<double> springDescription = List<double>.from(
setting.get(
SettingBoxKey.springDescription, // [mass, stiffness, damping]
defaultValue: [0.5, 100.0, 2.2 * sqrt(50)],