From 1326cc4966c6d2721f3764abaa3112237b0acdf7 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Fri, 16 May 2025 17:49:20 +0800 Subject: [PATCH] opt rank type Signed-off-by: bggRGjQaUbCoE --- lib/models/common/rank_type.dart | 120 ++++++++----------------------- lib/pages/rank/controller.dart | 7 +- lib/pages/rank/view.dart | 10 +-- 3 files changed, 36 insertions(+), 101 deletions(-) diff --git a/lib/models/common/rank_type.dart b/lib/models/common/rank_type.dart index 542de248..b3748542 100644 --- a/lib/models/common/rank_type.dart +++ b/lib/models/common/rank_type.dart @@ -1,92 +1,28 @@ -// TODO named record or enum -const List rankTabsConfig = [ - { - 'rid': 0, - 'label': '全站', - }, - { - 'season_type': 1, - 'label': '番剧', - }, - { - // 'rid': 168, - 'season_type': 4, - 'label': '国创', - }, - { - 'rid': 1005, //1, - 'label': '动画', - }, - { - 'rid': 1003, // 3, - 'label': '音乐', - }, - { - 'rid': 1004, // 129, - 'label': '舞蹈', - }, - { - 'rid': 1008, // 4, - 'label': '游戏', - }, - { - 'rid': 1010, // 36, - 'label': '知识', - }, - { - 'rid': 1012, // 188, - 'label': '科技', - }, - { - 'rid': 1018, //234, - 'label': '运动', - }, - { - 'rid': 1013, // 223, - 'label': '汽车', - }, - { - 'rid': 1020, // 211, - 'label': '美食', - }, - { - 'rid': 1024, //217, - 'label': '动物', - }, - { - 'rid': 1007, // 119, - 'label': '鬼畜', - }, - { - 'rid': 1014, // 155, - 'label': '时尚', - }, - { - 'rid': 1002, // 5, - 'label': '娱乐', - }, - { - 'rid': 1001, // 181, - 'label': '影视', - }, - { - // 'rid': 177, - 'season_type': 3, - 'label': '纪录', - }, - { - // 'rid': 23, - 'season_type': 2, - 'label': '电影', - }, - { - // 'rid': 11, - 'season_type': 5, - 'label': '剧集', - }, - { - // 'rid': 11, - 'season_type': 7, - 'label': '综艺', - }, -]; +enum RankType { + all('全站', rid: 0), + anime('番剧', seasonType: 1), + guochuang('国创', seasonType: 4), + douga('动画', rid: 1005), + music('音乐', rid: 1003), + dance('舞蹈', rid: 1004), + game('游戏', rid: 1008), + knowledge('知识', rid: 1010), + tech('科技', rid: 1012), + sports('运动', rid: 1018), + car('汽车', rid: 1013), + food('美食', rid: 1020), + animal('动物', rid: 1024), + kichiku('鬼畜', rid: 1007), + fashion('时尚', rid: 1014), + ent('娱乐', rid: 1002), + cinephile('影视', rid: 1001), + documentary('记录', seasonType: 3), + movie('电影', seasonType: 2), + tv('剧集', seasonType: 5), + variety('综艺', seasonType: 7); + + final String label; + final int? rid; + final int? seasonType; + const RankType(this.label, {this.rid, this.seasonType}); +} diff --git a/lib/pages/rank/controller.dart b/lib/pages/rank/controller.dart index 6e1695b5..4a1421d0 100644 --- a/lib/pages/rank/controller.dart +++ b/lib/pages/rank/controller.dart @@ -12,9 +12,8 @@ class RankController extends GetxController late TabController tabController; ZoneController get controller { - final item = rankTabsConfig[tabController.index]; - return Get.find( - tag: '${item['rid']}${item['season_type']}'); + final item = RankType.values[tabController.index]; + return Get.find(tag: '${item.rid}${item.seasonType}'); } @override @@ -23,7 +22,7 @@ class RankController extends GetxController @override void onInit() { super.onInit(); - tabController = TabController(length: rankTabsConfig.length, vsync: this); + tabController = TabController(length: RankType.values.length, vsync: this); } @override diff --git a/lib/pages/rank/view.dart b/lib/pages/rank/view.dart index 2a79e621..edeb67f9 100644 --- a/lib/pages/rank/view.dart +++ b/lib/pages/rank/view.dart @@ -32,7 +32,7 @@ class _RankPageState extends State ), child: Column( children: List.generate( - rankTabsConfig.length, + RankType.values.length, (index) => Obx( () => IntrinsicHeight( child: InkWell( @@ -65,7 +65,7 @@ class _RankPageState extends State padding: const EdgeInsets.symmetric(vertical: 7), child: Text( - rankTabsConfig[index]['label'], + RankType.values[index].label, style: TextStyle( color: index == _rankController.tabIndex.value @@ -92,10 +92,10 @@ class _RankPageState extends State child: TabBarView( physics: const NeverScrollableScrollPhysics(), controller: _rankController.tabController, - children: rankTabsConfig + children: RankType.values .map((item) => ZonePage( - rid: item['rid'], - seasonType: item['season_type'], + rid: item.rid, + seasonType: item.seasonType, )) .toList(), ),