diff --git a/lib/common/widgets/scroll_physics.dart b/lib/common/widgets/scroll_physics.dart index d1faf9721..f4dbb5fae 100644 --- a/lib/common/widgets/scroll_physics.dart +++ b/lib/common/widgets/scroll_physics.dart @@ -5,7 +5,9 @@ Widget videoTabBarView({ required List children, TabController? controller, }) => TabBarView( - physics: const CustomTabBarViewClampingScrollPhysics(), + physics: const CustomTabBarViewScrollPhysics( + parent: ClampingScrollPhysics(), + ), controller: controller, children: children, ); @@ -19,6 +21,15 @@ Widget tabBarView({ children: children, ); +SpringDescription _customSpringDescription() { + final List springDescription = Pref.springDescription; + return SpringDescription( + mass: springDescription[0], + stiffness: springDescription[1], + damping: springDescription[2], + ); +} + class CustomTabBarViewScrollPhysics extends ScrollPhysics { const CustomTabBarViewScrollPhysics({super.parent}); @@ -27,20 +38,10 @@ class CustomTabBarViewScrollPhysics extends ScrollPhysics { return CustomTabBarViewScrollPhysics(parent: buildParent(ancestor)); } - @override - SpringDescription get spring => CustomSpringDescription(); -} - -class CustomTabBarViewClampingScrollPhysics extends ClampingScrollPhysics { - const CustomTabBarViewClampingScrollPhysics({super.parent}); + static final _springDescription = _customSpringDescription(); @override - CustomTabBarViewClampingScrollPhysics applyTo(ScrollPhysics? ancestor) { - return CustomTabBarViewClampingScrollPhysics(parent: buildParent(ancestor)); - } - - @override - SpringDescription get spring => CustomSpringDescription(); + SpringDescription get spring => _springDescription; } mixin ReloadMixin { @@ -79,30 +80,3 @@ class ReloadScrollPhysics extends AlwaysScrollableScrollPhysics { ); } } - -class CustomSpringDescription implements SpringDescription { - static final List springDescription = Pref.springDescription; - - @override - final mass = springDescription[0]; - - @override - final stiffness = springDescription[1]; - - @override - final damping = springDescription[2]; - - CustomSpringDescription._(); - - static final _instance = CustomSpringDescription._(); - - factory CustomSpringDescription() => _instance; - - /// Defaults to 0. - @override - double bounce = 0.0; - - /// Defaults to 0.5 seconds. - @override - Duration duration = const Duration(milliseconds: 500); -} diff --git a/lib/http/member.dart b/lib/http/member.dart index 3830f2409..573dfaf1f 100644 --- a/lib/http/member.dart +++ b/lib/http/member.dart @@ -316,7 +316,10 @@ abstract final class MemberHttp { } static Future memberStat({int? mid}) async { - final res = await Request().get(Api.userStat, queryParameters: {'vmid': mid}); + final res = await Request().get( + Api.userStat, + queryParameters: {'vmid': mid}, + ); if (res.data['code'] == 0) { return {'status': true, 'data': res.data['data']}; } else { diff --git a/lib/http/user.dart b/lib/http/user.dart index 147199a6e..ad3777235 100644 --- a/lib/http/user.dart +++ b/lib/http/user.dart @@ -22,7 +22,10 @@ import 'package:dio/dio.dart'; abstract final class UserHttp { static Future userStat({required int mid}) async { - final res = await Request().get(Api.userStat, queryParameters: {'vmid': mid}); + final res = await Request().get( + Api.userStat, + queryParameters: {'vmid': mid}, + ); if (res.data['code'] == 0) { return {'status': true, 'data': res.data['data']}; } else { diff --git a/lib/pages/live_room/view.dart b/lib/pages/live_room/view.dart index d620ae4f2..9421c69e7 100644 --- a/lib/pages/live_room/view.dart +++ b/lib/pages/live_room/view.dart @@ -718,7 +718,9 @@ class _LiveRoomPageState extends State ? PageView( key: pageKey, controller: _liveRoomController.pageController, - physics: const CustomTabBarViewClampingScrollPhysics(), + physics: const CustomTabBarViewScrollPhysics( + parent: ClampingScrollPhysics(), + ), onPageChanged: (value) => _liveRoomController.pageIndex.value = value, children: [ diff --git a/lib/pages/setting/models/style_settings.dart b/lib/pages/setting/models/style_settings.dart index 00e352e22..db359ee08 100644 --- a/lib/pages/setting/models/style_settings.dart +++ b/lib/pages/setting/models/style_settings.dart @@ -5,7 +5,6 @@ import 'package:PiliPlus/common/widgets/color_palette.dart'; import 'package:PiliPlus/common/widgets/custom_toast.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; -import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/main.dart'; import 'package:PiliPlus/models/common/dynamic/dynamic_badge_mode.dart'; import 'package:PiliPlus/models/common/dynamic/up_panel_position.dart'; @@ -623,7 +622,7 @@ List get styleSettings => [ title: '滑动动画弹簧参数', leading: const Icon(Icons.chrome_reader_mode_outlined), onTap: (context, setState) { - List springDescription = CustomSpringDescription.springDescription + final List springDescription = Pref.springDescription .map((i) => i.toString()) .toList(); showDialog( @@ -641,9 +640,7 @@ List get styleSettings => [ keyboardType: const TextInputType.numberWithOptions( decimal: true, ), - onChanged: (value) { - springDescription[index] = value; - }, + onChanged: (value) => springDescription[index] = value, inputFormatters: [ FilteringTextInputFormatter.allow(RegExp(r'[\d\.]+')), ], @@ -654,6 +651,14 @@ List get styleSettings => [ ), ), actions: [ + TextButton( + onPressed: () { + Get.back(); + GStorage.setting.delete(SettingBoxKey.springDescription); + SmartDialog.showToast('重置成功,重启生效'); + }, + child: const Text('重置'), + ), TextButton( onPressed: Get.back, child: Text( @@ -664,19 +669,15 @@ List get styleSettings => [ ), ), TextButton( - onPressed: () async { - Get.back(); - await GStorage.setting.put( - SettingBoxKey.springDescription, - List.generate( - 3, - (i) => - double.tryParse(springDescription[i]) ?? - CustomSpringDescription.springDescription[i], - ), - ); - SmartDialog.showToast('设置成功,重启生效'); - setState(); + onPressed: () { + try { + final res = springDescription.map(double.parse).toList(); + Get.back(); + GStorage.setting.put(SettingBoxKey.springDescription, res); + SmartDialog.showToast('设置成功,重启生效'); + } catch (e) { + SmartDialog.showToast(e.toString()); + } }, child: const Text('确定'), ), diff --git a/lib/pages/setting/models/video_settings.dart b/lib/pages/setting/models/video_settings.dart index 9d0c438f7..d69863358 100644 --- a/lib/pages/setting/models/video_settings.dart +++ b/lib/pages/setting/models/video_settings.dart @@ -376,7 +376,8 @@ List get videoSettings => [ title: '硬解模式', initValues: Pref.hardwareDecoding.split(','), values: { - for (final e in HwDecType.values) e.hwdec: '${e.hwdec}\n${e.desc}', + for (final e in HwDecType.values) + e.hwdec: '${e.hwdec}\n${e.desc}', }, ); }, diff --git a/lib/pages/setting/view.dart b/lib/pages/setting/view.dart index 0d8fec03f..47ed404b1 100644 --- a/lib/pages/setting/view.dart +++ b/lib/pages/setting/view.dart @@ -218,7 +218,9 @@ class _SettingPageState extends State { return MultiSelectDialog( title: '选择要登出的账号uid', initValues: const Iterable.empty(), - values: {for (final i in Accounts.account.values) i: i.mid.toString()}, + values: { + for (final i in Accounts.account.values) i: i.mid.toString(), + }, ); }, );