diff --git a/lib/common/widgets/spring_physics.dart b/lib/common/widgets/spring_physics.dart index 4c0eac81..16b4b2e3 100644 --- a/lib/common/widgets/spring_physics.dart +++ b/lib/common/widgets/spring_physics.dart @@ -1,32 +1,54 @@ import 'package:PiliPlus/utils/storage.dart'; import 'package:flutter/material.dart'; +Widget videoTabBarView({ + required List children, + TabController? controller, +}) => + TabBarView( + physics: const CustomTabBarViewClampingScrollPhysics(), + controller: controller, + children: children, + ); + Widget tabBarView({ required List 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], + ); +} diff --git a/lib/pages/setting/widgets/model.dart b/lib/pages/setting/widgets/model.dart index 9a44f681..e9a0f7cb 100644 --- a/lib/pages/setting/widgets/model.dart +++ b/lib/pages/setting/widgets/model.dart @@ -587,14 +587,13 @@ List get styleSettings => [ TextButton( onPressed: () async { Get.back(); - late final spring = GStorage.springDescription; await GStorage.setting.put( SettingBoxKey.springDescription, List.generate( 3, (i) => double.tryParse(springDescription[i]) ?? - spring[i], + GStorage.springDescription[i], ), ); SmartDialog.showToast('设置成功,重启生效'); diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index a5e6c05d..4ebee0b3 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -624,7 +624,7 @@ class _VideoDetailPageState extends State showReply: videoDetailController.showReply, ), Expanded( - child: tabBarView( + child: videoTabBarView( controller: videoDetailController.tabCtr, children: [ videoIntro(), @@ -674,7 +674,7 @@ class _VideoDetailPageState extends State children: [ buildTabbar(showReply: videoDetailController.showReply), Expanded( - child: tabBarView( + child: videoTabBarView( controller: videoDetailController.tabCtr, children: [ videoIntro(), @@ -773,7 +773,7 @@ class _VideoDetailPageState extends State showReply: videoDetailController.showReply, ), Expanded( - child: tabBarView( + child: videoTabBarView( controller: videoDetailController.tabCtr, children: [ if (videoDetailController.showReply) @@ -882,7 +882,7 @@ class _VideoDetailPageState extends State showReply: videoDetailController.showReply, ), Expanded( - child: tabBarView( + child: videoTabBarView( controller: videoDetailController.tabCtr, children: [ if (videoDetailController.videoType == diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index 3fa99bdd..92c0a46d 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -422,12 +422,12 @@ class GStorage { // ratio: 1.1, // ); // damping = ratio * 2.0 * math.sqrt(mass * stiffness) - static List get springDescription => List.from( - setting.get( - SettingBoxKey.springDescription, // [mass, stiffness, damping] - defaultValue: [0.5, 100.0, 2.2 * sqrt(50)], - ), - ); + static final List springDescription = List.from( + setting.get( + SettingBoxKey.springDescription, // [mass, stiffness, damping] + defaultValue: [0.5, 100.0, 2.2 * sqrt(50)], + ), + ); // static Brightness get brightness { // return switch (_themeMode) {