diff --git a/lib/common/widgets/scroll_physics.dart b/lib/common/widgets/scroll_physics.dart index efc8dd5a..a7e11c8b 100644 --- a/lib/common/widgets/scroll_physics.dart +++ b/lib/common/widgets/scroll_physics.dart @@ -30,11 +30,7 @@ class CustomTabBarViewScrollPhysics extends ScrollPhysics { } @override - SpringDescription get spring => SpringDescription( - mass: GStorage.springDescription[0], - stiffness: GStorage.springDescription[1], - damping: GStorage.springDescription[2], - ); + SpringDescription get spring => CustomSpringDescription(); } class CustomTabBarViewClampingScrollPhysics extends ClampingScrollPhysics { @@ -46,11 +42,7 @@ class CustomTabBarViewClampingScrollPhysics extends ClampingScrollPhysics { } @override - SpringDescription get spring => SpringDescription( - mass: GStorage.springDescription[0], - stiffness: GStorage.springDescription[1], - damping: GStorage.springDescription[2], - ); + SpringDescription get spring => CustomSpringDescription(); } class PositionRetainedScrollPhysics extends AlwaysScrollableScrollPhysics { @@ -86,3 +78,20 @@ class PositionRetainedScrollPhysics extends AlwaysScrollableScrollPhysics { } } } + +class CustomSpringDescription implements SpringDescription { + @override + final mass = GStorage.springDescription[0]; + + @override + final stiffness = GStorage.springDescription[1]; + + @override + final damping = GStorage.springDescription[2]; + + CustomSpringDescription._(); + + static final _instance = CustomSpringDescription._(); + + factory CustomSpringDescription() => _instance; +} diff --git a/lib/pages/fav/view.dart b/lib/pages/fav/view.dart index e6277304..c8f199e8 100644 --- a/lib/pages/fav/view.dart +++ b/lib/pages/fav/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/fav/article/view.dart'; import 'package:PiliPlus/pages/fav/note/view.dart'; @@ -10,7 +11,15 @@ import 'package:get/get.dart'; enum _FavType { video, bangumi, cinema, article, note } extension _FavTypeExt on _FavType { - String get title => ['视频', '追番', '追剧', '专栏', '笔记'][index]; + String get title => const ['视频', '追番', '追剧', '专栏', '笔记'][index]; + + Widget get page => switch (this) { + _FavType.video => const FavVideoPage(), + _FavType.bangumi => const FavPgcPage(type: 1), + _FavType.cinema => const FavPgcPage(type: 2), + _FavType.article => const FavArticlePage(), + _FavType.note => const FavNotePage(), + }; } class FavPage extends StatefulWidget { @@ -83,26 +92,12 @@ class _FavPageState extends State with SingleTickerProviderStateMixin { ], bottom: TabBar( controller: _tabController, - tabs: _FavType.values - .map( - (item) => Tab(text: item.title), - ) - .toList(), + tabs: _FavType.values.map((item) => Tab(text: item.title)).toList(), ), ), - body: TabBarView( + body: tabBarView( controller: _tabController, - children: _FavType.values - .map( - (item) => switch (item) { - _FavType.video => const FavVideoPage(), - _FavType.bangumi => const FavPgcPage(type: 1), - _FavType.cinema => const FavPgcPage(type: 2), - _FavType.article => const FavArticlePage(), - _FavType.note => const FavNotePage(), - }, - ) - .toList(), + children: _FavType.values.map((item) => item.page).toList(), ), ); } diff --git a/lib/pages/history/view.dart b/lib/pages/history/view.dart index b85f7f12..45691c4f 100644 --- a/lib/pages/history/view.dart +++ b/lib/pages/history/view.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/common/widgets/http_error.dart'; import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; +import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/fav_search/view.dart' show SearchType; import 'package:PiliPlus/pages/history/base_controller.dart'; @@ -227,7 +228,7 @@ class _HistoryPageState extends State child: TabBarView( physics: enableMultiSelect ? const NeverScrollableScrollPhysics() - : null, + : const CustomTabBarViewScrollPhysics(), controller: _historyController.tabController, children: [ _buildPage, diff --git a/lib/pages/setting/widgets/model.dart b/lib/pages/setting/widgets/model.dart index 5630e07b..943a5aeb 100644 --- a/lib/pages/setting/widgets/model.dart +++ b/lib/pages/setting/widgets/model.dart @@ -2583,7 +2583,7 @@ SettingsModel _getVideoFilterSelectModel({ value = result!; await GStorage.setting.put(key, result); setState(); - RecommendFilter.update(); + if (isFilter) RecommendFilter.update(); } } },