From b28882cff5fa10e77aeee66c780bb10218626e0b Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Wed, 7 May 2025 22:35:48 +0800 Subject: [PATCH] opt: dyn Signed-off-by: bggRGjQaUbCoE --- lib/http/dynamics.dart | 17 +++++----- lib/models/common/dynamic/dynamics_type.dart | 33 -------------------- lib/pages/dynamics/controller.dart | 9 +++--- lib/pages/dynamics_tab/controller.dart | 14 ++++----- lib/pages/dynamics_tab/view.dart | 12 ++++--- lib/utils/login_utils.dart | 9 +++--- 6 files changed, 32 insertions(+), 62 deletions(-) diff --git a/lib/http/dynamics.dart b/lib/http/dynamics.dart index 49f8295d..acfb7083 100644 --- a/lib/http/dynamics.dart +++ b/lib/http/dynamics.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/http/api.dart'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; import 'package:PiliPlus/models/dynamics/dyn_topic_feed/topic_card_list.dart'; import 'package:PiliPlus/models/dynamics/dyn_topic_top/top_details.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; @@ -15,20 +16,20 @@ import 'package:dio/dio.dart'; class DynamicsHttp { static Future> followDynamic({ - String? type, + DynamicsTabType type = DynamicsTabType.all, String? offset, int? mid, }) async { Map data = { - 'type': type ?? 'all', - 'timezone_offset': '-480', + if (type == DynamicsTabType.up) + 'host_mid': mid + else ...{ + 'type': type.name, + 'timezone_offset': '-480', + }, 'offset': offset, - 'features': 'itemOpusStyle,listOnlyfans' + 'features': 'itemOpusStyle,listOnlyfans', }; - if (mid != -1) { - data['host_mid'] = mid; - data.remove('timezone_offset'); - } var res = await Request().get(Api.followDynamic, queryParameters: data); if (res.data['code'] == 0) { try { diff --git a/lib/models/common/dynamic/dynamics_type.dart b/lib/models/common/dynamic/dynamics_type.dart index 76c5babe..5829cd89 100644 --- a/lib/models/common/dynamic/dynamics_type.dart +++ b/lib/models/common/dynamic/dynamics_type.dart @@ -10,36 +10,3 @@ extension DynamicsTabTypeExt on DynamicsTabType { String get values => const ['all', 'video', 'pgc', 'article', 'up'][index]; String get labels => const ['全部', '投稿', '番剧', '专栏', 'UP'][index]; } - -const List tabsConfig = [ - { - 'tag': 'all', - 'value': DynamicsTabType.all, - 'label': '全部', - 'enabled': true, - }, - { - 'tag': 'video', - 'value': DynamicsTabType.video, - 'label': '投稿', - 'enabled': true, - }, - { - 'tag': 'pgc', - 'value': DynamicsTabType.pgc, - 'label': '番剧', - 'enabled': true, - }, - { - 'tag': 'article', - 'value': DynamicsTabType.article, - 'label': '专栏', - 'enabled': true, - }, - { - 'tag': 'up', - 'value': DynamicsTabType.up, - 'label': 'UP', - 'enabled': true, - }, -]; diff --git a/lib/pages/dynamics/controller.dart b/lib/pages/dynamics/controller.dart index a91ca6d5..1dc35675 100644 --- a/lib/pages/dynamics/controller.dart +++ b/lib/pages/dynamics/controller.dart @@ -42,7 +42,7 @@ class DynamicsController extends GetxController DynamicsTabController? get controller { try { return Get.find( - tag: tabsConfig[tabController.index]['tag']); + tag: DynamicsTabType.values[tabController.index].name); } catch (_) { return null; } @@ -58,13 +58,14 @@ class DynamicsController extends GetxController isLogin.value = userInfo != null; tabController = TabController( - length: tabsConfig.length, + length: DynamicsTabType.values.length, vsync: this, initialIndex: GStorage.setting .get(SettingBoxKey.defaultDynamicType, defaultValue: 0), ); - tabsPageList = - tabsConfig.map((e) => DynamicsTabPage(dynamicsType: e['tag'])).toList(); + tabsPageList = DynamicsTabType.values + .map((e) => DynamicsTabPage(dynamicsType: e)) + .toList(); queryFollowUp(); } diff --git a/lib/pages/dynamics_tab/controller.dart b/lib/pages/dynamics_tab/controller.dart index d8f41581..c9a868cb 100644 --- a/lib/pages/dynamics_tab/controller.dart +++ b/lib/pages/dynamics_tab/controller.dart @@ -1,9 +1,9 @@ import 'package:PiliPlus/http/dynamics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/msg.dart'; +import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; -import 'package:PiliPlus/pages/dynamics/controller.dart'; import 'package:PiliPlus/pages/main/controller.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -12,11 +12,10 @@ import 'package:get/get.dart'; class DynamicsTabController extends CommonListController { DynamicsTabController({required this.dynamicsType}); - final String dynamicsType; + final DynamicsTabType dynamicsType; String offset = ''; - int mid = -1; + int? mid; late final MainController mainController = Get.find(); - DynamicsController dynamicsController = Get.find(); @override void onInit() { @@ -26,11 +25,10 @@ class DynamicsTabController @override Future onRefresh() { - if (dynamicsType == 'all') { + if (dynamicsType == DynamicsTabType.all) { mainController.setCount(); } offset = ''; - dynamicsController.queryFollowUp(); return super.onRefresh(); } @@ -49,9 +47,9 @@ class DynamicsTabController @override Future> customGetData() => DynamicsHttp.followDynamic( - type: dynamicsType == "up" ? "all" : dynamicsType, + type: dynamicsType, offset: offset, - mid: dynamicsType == "up" ? mid : -1, + mid: mid, ); Future onRemove(dynamic dynamicId) async { diff --git a/lib/pages/dynamics_tab/view.dart b/lib/pages/dynamics_tab/view.dart index 6a177a52..9d806563 100644 --- a/lib/pages/dynamics_tab/view.dart +++ b/lib/pages/dynamics_tab/view.dart @@ -5,6 +5,7 @@ import 'package:PiliPlus/common/skeleton/dynamic_card.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/common/common_page.dart'; import 'package:PiliPlus/pages/dynamics/controller.dart'; @@ -20,7 +21,7 @@ import 'package:waterfall_flow/waterfall_flow.dart'; class DynamicsTabPage extends CommonPage { const DynamicsTabPage({super.key, required this.dynamicsType}); - final String dynamicsType; + final DynamicsTabType dynamicsType; @override State createState() => _DynamicsTabPageState(); @@ -73,7 +74,7 @@ class _DynamicsTabPageState late DynamicsTabController controller = Get.put( DynamicsTabController(dynamicsType: widget.dynamicsType) ..mid = dynamicsController.mid.value, - tag: widget.dynamicsType, + tag: widget.dynamicsType.name, ); @override @@ -91,7 +92,7 @@ class _DynamicsTabPageState @override void initState() { super.initState(); - if (widget.dynamicsType == 'up') { + if (widget.dynamicsType == DynamicsTabType.up) { _listener = dynamicsController.mid.listen((mid) { if (mid != -1) { controller @@ -115,7 +116,10 @@ class _DynamicsTabPageState Widget build(BuildContext context) { super.build(context); return refreshIndicator( - onRefresh: controller.onRefresh, + onRefresh: () { + dynamicsController.queryFollowUp(); + return controller.onRefresh(); + }, child: CustomScrollView( physics: const AlwaysScrollableScrollPhysics(), controller: controller.scrollController, diff --git a/lib/utils/login_utils.dart b/lib/utils/login_utils.dart index 9381cd84..65871ce3 100644 --- a/lib/utils/login_utils.dart +++ b/lib/utils/login_utils.dart @@ -71,10 +71,9 @@ class LoginUtils { ..onRefresh(); } catch (_) {} - for (int i = 0; i < tabsConfig.length; i++) { + for (var item in DynamicsTabType.values) { try { - Get.find(tag: tabsConfig[i]['tag']) - .onRefresh(); + Get.find(tag: item.name).onRefresh(); } catch (_) {} } @@ -157,9 +156,9 @@ class LoginUtils { ..onRefresh(); } catch (_) {} - for (int i = 0; i < tabsConfig.length; i++) { + for (var item in DynamicsTabType.values) { try { - Get.find(tag: tabsConfig[i]['tag']).onRefresh(); + Get.find(tag: item.name).onRefresh(); } catch (_) {} }