diff --git a/lib/models/common/reply_sort_type.dart b/lib/models/common/reply_sort_type.dart index 89da82b3..f85b6088 100644 --- a/lib/models/common/reply_sort_type.dart +++ b/lib/models/common/reply_sort_type.dart @@ -1,6 +1,6 @@ enum ReplySortType { time, like } extension ReplySortTypeExtension on ReplySortType { - String get titles => ['最新评论', '最热评论'][index]; - String get labels => ['最新', '最热'][index]; + String get title => ['最新评论', '最热评论'][index]; + String get label => ['最新', '最热'][index]; } diff --git a/lib/pages/bangumi/controller.dart b/lib/pages/bangumi/controller.dart index 0d9e2488..e4b343b1 100644 --- a/lib/pages/bangumi/controller.dart +++ b/lib/pages/bangumi/controller.dart @@ -12,7 +12,6 @@ class BangumiController extends CommonController { BangumiController({required this.tabType}); final TabType tabType; - bool isLoadingMore = true; RxBool isLogin = false.obs; int? mid; dynamic userInfo; diff --git a/lib/pages/common/reply_controller.dart b/lib/pages/common/reply_controller.dart index 413cd5f5..1f099db6 100644 --- a/lib/pages/common/reply_controller.dart +++ b/lib/pages/common/reply_controller.dart @@ -18,20 +18,17 @@ import 'package:get/get_navigation/src/dialog/dialog_route.dart'; abstract class ReplyController extends CommonController { String nextOffset = ''; - bool isLoadingMore = false; RxInt count = (-1).obs; - ReplySortType sortType = ReplySortType.time; - RxString sortTypeTitle = ReplySortType.time.titles.obs; - RxString sortTypeLabel = ReplySortType.time.labels.obs; + Rx sortType = ReplySortType.time.obs; late final savedReplies = {}; - late bool isLogin = GStorage.userInfo.get('userInfoCache') != null; + late final bool isLogin = GStorage.userInfo.get('userInfoCache') != null; CursorReply? cursor; late Mode mode = Mode.MAIN_LIST_HOT; - bool hasUpTop = false; + late bool hasUpTop = false; late final banWordForReply = GStorage.banWordForReply; @@ -44,10 +41,8 @@ abstract class ReplyController extends CommonController { GStorage.setting.put(SettingBoxKey.replySortType, 0); defaultReplySortIndex = 0; } - sortType = ReplySortType.values[defaultReplySortIndex]; - sortTypeTitle.value = sortType.titles; - sortTypeLabel.value = sortType.labels; - if (sortType == ReplySortType.time) { + sortType.value = ReplySortType.values[defaultReplySortIndex]; + if (sortType.value == ReplySortType.time) { mode = Mode.MAIN_LIST_TIME; } } @@ -119,18 +114,16 @@ abstract class ReplyController extends CommonController { queryBySort() { EasyThrottle.throttle('queryBySort', const Duration(seconds: 1), () { feedBack(); - switch (sortType) { + switch (sortType.value) { case ReplySortType.time: - sortType = ReplySortType.like; + sortType.value = ReplySortType.like; mode = Mode.MAIN_LIST_HOT; break; case ReplySortType.like: - sortType = ReplySortType.time; + sortType.value = ReplySortType.time; mode = Mode.MAIN_LIST_TIME; break; } - sortTypeTitle.value = sortType.titles; - sortTypeLabel.value = sortType.labels; nextOffset = ''; loadingState.value = LoadingState.loading(); onRefresh(); diff --git a/lib/pages/dynamics/detail/controller.dart b/lib/pages/dynamics/detail/controller.dart index b446f7c3..cbc4016b 100644 --- a/lib/pages/dynamics/detail/controller.dart +++ b/lib/pages/dynamics/detail/controller.dart @@ -54,7 +54,7 @@ class DynamicDetailController extends ReplyController { oid: oid!, nextOffset: nextOffset, type: type!, - sort: sortType.index, + sort: sortType.value.index, page: currentPage, banWordForReply: banWordForReply, ); diff --git a/lib/pages/dynamics/detail/view.dart b/lib/pages/dynamics/detail/view.dart index 48276ecd..060ef433 100644 --- a/lib/pages/dynamics/detail/view.dart +++ b/lib/pages/dynamics/detail/view.dart @@ -5,6 +5,7 @@ import 'package:PiliPlus/common/widgets/custom_sliver_persistent_header_delegate import 'package:PiliPlus/common/widgets/loading_widget.dart'; import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/common/reply_sort_type.dart'; import 'package:PiliPlus/pages/video/detail/reply/widgets/reply_item.dart'; import 'package:PiliPlus/pages/video/detail/reply/widgets/reply_item_grpc.dart'; import 'package:PiliPlus/utils/extension.dart'; @@ -464,7 +465,7 @@ class _DynamicDetailPageState extends State color: Theme.of(context).colorScheme.secondary, ), label: Obx(() => Text( - _dynamicDetailController.sortTypeLabel.value, + _dynamicDetailController.sortType.value.label, style: TextStyle( fontSize: 13, color: Theme.of(context).colorScheme.secondary, diff --git a/lib/pages/html/controller.dart b/lib/pages/html/controller.dart index 373ab21e..24b7a0ec 100644 --- a/lib/pages/html/controller.dart +++ b/lib/pages/html/controller.dart @@ -64,7 +64,7 @@ class HtmlRenderController extends ReplyController { oid: oid.value, nextOffset: nextOffset, type: type, - sort: sortType.index, + sort: sortType.value.index, page: currentPage, banWordForReply: banWordForReply, ); diff --git a/lib/pages/html/view.dart b/lib/pages/html/view.dart index df443df0..dbd66b95 100644 --- a/lib/pages/html/view.dart +++ b/lib/pages/html/view.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/common/widgets/article_content.dart'; import 'package:PiliPlus/common/widgets/http_error.dart'; import 'package:PiliPlus/common/widgets/loading_widget.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/common/reply_sort_type.dart'; import 'package:PiliPlus/pages/video/detail/reply/widgets/reply_item.dart'; import 'package:PiliPlus/pages/video/detail/reply/widgets/reply_item_grpc.dart'; import 'package:PiliPlus/utils/extension.dart'; @@ -517,7 +518,7 @@ class _HtmlRenderPageState extends State icon: const Icon(Icons.sort, size: 16), label: Obx( () => Text( - _htmlRenderCtr.sortTypeLabel.value, + _htmlRenderCtr.sortType.value.label, style: const TextStyle(fontSize: 13), ), ), diff --git a/lib/pages/setting/widgets/model.dart b/lib/pages/setting/widgets/model.dart index 28398f2b..5d43fef4 100644 --- a/lib/pages/setting/widgets/model.dart +++ b/lib/pages/setting/widgets/model.dart @@ -1986,7 +1986,7 @@ List get extraSettings => [ setKey: SettingBoxKey.replySortType, leading: const Icon(Icons.whatshot_outlined), getSubtitle: () => - '当前优先展示「${ReplySortType.values[GStorage.defaultReplySort].titles}」', + '当前优先展示「${ReplySortType.values[GStorage.defaultReplySort].title}」', onTap: (setState) async { int? result = await showDialog( context: Get.context!, @@ -1995,7 +1995,7 @@ List get extraSettings => [ title: '评论展示', value: GStorage.defaultReplySort, values: ReplySortType.values.map((e) { - return {'title': e.titles, 'value': e.index}; + return {'title': e.title, 'value': e.index}; }).toList(), ); }, diff --git a/lib/pages/video/detail/reply/controller.dart b/lib/pages/video/detail/reply/controller.dart index b5a2d1b1..2839cfdf 100644 --- a/lib/pages/video/detail/reply/controller.dart +++ b/lib/pages/video/detail/reply/controller.dart @@ -34,7 +34,7 @@ class VideoReplyController extends ReplyController { oid: aid!, nextOffset: nextOffset, type: ReplyType.video.index, - sort: sortType.index, + sort: sortType.value.index, page: currentPage, banWordForReply: banWordForReply, ); diff --git a/lib/pages/video/detail/reply/view.dart b/lib/pages/video/detail/reply/view.dart index e82cbb43..4e377b12 100644 --- a/lib/pages/video/detail/reply/view.dart +++ b/lib/pages/video/detail/reply/view.dart @@ -3,6 +3,7 @@ import 'package:PiliPlus/common/widgets/loading_widget.dart'; import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/http_error.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/common/reply_sort_type.dart'; import 'package:PiliPlus/pages/video/detail/reply/widgets/reply_item.dart'; import 'package:PiliPlus/pages/video/detail/reply/widgets/reply_item_grpc.dart'; import 'package:PiliPlus/utils/extension.dart'; @@ -146,7 +147,7 @@ class _VideoReplyPanelState extends State children: [ Obx( () => Text( - '${_videoReplyController.sortTypeLabel.value}评论', + _videoReplyController.sortType.value.title, style: const TextStyle(fontSize: 13), ), ), @@ -162,7 +163,7 @@ class _VideoReplyPanelState extends State ), label: Obx( () => Text( - _videoReplyController.sortTypeLabel.value, + _videoReplyController.sortType.value.label, style: TextStyle( fontSize: 13, color: