From 3c061f995c2f5db291c97bebe994ce37ddc254b6 Mon Sep 17 00:00:00 2001 From: xkeyC <3334969096@qq.com> Date: Thu, 8 May 2025 22:44:22 +0800 Subject: [PATCH] feat: 42kit Nav Support network config --- lib/api/udb.dart | 4 +- lib/app.dart | 4 ++ lib/common/conf/url_conf.dart | 1 + lib/data/app_version_data.dart | 10 ++- .../dialogs/home_countdown_dialog_ui.dart | 71 ++++++++++--------- 5 files changed, 51 insertions(+), 39 deletions(-) diff --git a/lib/api/udb.dart b/lib/api/udb.dart index b0fb48a..40bb41d 100644 --- a/lib/api/udb.dart +++ b/lib/api/udb.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:starcitizen_doctor/common/conf/url_conf.dart'; import 'package:starcitizen_doctor/common/io/rs_http.dart'; import 'package:starcitizen_doctor/data/nav_api_data.dart'; class UDBNavApi { static Future getNavItems({int pageNo = 1}) async { - final r = await RSHttp.getText( - "https://payload.citizenwiki.cn/api/community-navs?sort=is_sponsored&depth=2&page=$pageNo&limit=1000"); + final r = await RSHttp.getText(URLConf.nav42KitUrl); if (r.isEmpty) throw "Network Error"; final result = NavApiData.fromJson(jsonDecode(r)); return result; diff --git a/lib/app.dart b/lib/app.dart index 8c34941..67ad34e 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -22,6 +22,7 @@ import 'package:window_manager/window_manager.dart'; import 'api/analytics.dart'; import 'api/api.dart'; +import 'common/conf/url_conf.dart'; import 'common/helper/system_helper.dart'; import 'common/io/rs_http.dart'; import 'common/rust/frb_generated.dart'; @@ -214,6 +215,9 @@ class AppGlobalModel extends _$AppGlobalModel { dPrint("lastVersion=${networkVersionData.lastVersion} ${networkVersionData.lastVersionCode}"); } state = state.copyWith(networkVersionData: networkVersionData); + if (networkVersionData.nav42KitUrl != null) { + URLConf.nav42KitUrl = networkVersionData.nav42KitUrl!; + } } catch (e) { checkUpdateError = e; dPrint("_checkUpdate Error:$e"); diff --git a/lib/common/conf/url_conf.dart b/lib/common/conf/url_conf.dart index f10b570..3a69a07 100644 --- a/lib/common/conf/url_conf.dart +++ b/lib/common/conf/url_conf.dart @@ -39,6 +39,7 @@ class URLConf { static const feedbackUrl = "https://support.citizenwiki.cn/all"; static const feedbackFAQUrl = "https://support.citizenwiki.cn/t/sc-toolbox"; + static String nav42KitUrl = "https://payload.citizenwiki.cn/api/community-navs?sort=is_sponsored&depth=2&page=1&limit=1000"; static String get devReleaseUrl => "$gitApiHome/SCToolBox/Release/releases"; diff --git a/lib/data/app_version_data.dart b/lib/data/app_version_data.dart index 07ad647..995f77b 100644 --- a/lib/data/app_version_data.dart +++ b/lib/data/app_version_data.dart @@ -17,6 +17,9 @@ class AppVersionData { this.mSEMinVersionCode, this.p4kDownloadUrl, this.activityColors, + this.nav42KitUrl, + this.gameChannels, + this.webMirrors, }); AppVersionData.fromJson(dynamic json) { @@ -27,11 +30,10 @@ class AppVersionData { mSELastVersionCode = json['MSE_lastVersionCode']; mSEMinVersionCode = json['MSE_minVersionCode']; p4kDownloadUrl = json['p4kDownloadUrl']; - activityColors = json['activityColors'] != null - ? ActivityColors.fromJson(json['activityColors']) - : null; + activityColors = json['activityColors'] != null ? ActivityColors.fromJson(json['activityColors']) : null; gameChannels = List.from(json["game_channels"]).cast(); webMirrors = json["web_mirrors"]; + nav42KitUrl = json['nav_42kit_url']; } String? lastVersion; @@ -44,6 +46,7 @@ class AppVersionData { ActivityColors? activityColors; List? gameChannels; Map? webMirrors; + String? nav42KitUrl; Map toJson() { final map = {}; @@ -59,6 +62,7 @@ class AppVersionData { } map["web_mirrors"] = webMirrors; map["game_channels"] = gameChannels; + map["nav_42kit_url"] = nav42KitUrl; return map; } } diff --git a/lib/ui/home/dialogs/home_countdown_dialog_ui.dart b/lib/ui/home/dialogs/home_countdown_dialog_ui.dart index 64968d9..3bec9bd 100644 --- a/lib/ui/home/dialogs/home_countdown_dialog_ui.dart +++ b/lib/ui/home/dialogs/home_countdown_dialog_ui.dart @@ -43,41 +43,44 @@ class HomeCountdownDialogUI extends HookConsumerWidget { itemBuilder: (BuildContext context, int index) { final item = homeState.countdownFestivalListData![index]; - return Container( - decoration: BoxDecoration( - color: FluentTheme.of(context).cardColor, - borderRadius: BorderRadius.circular(12), - ), - child: Padding( - padding: const EdgeInsets.all(12), - child: Row( - children: [ - if (item.icon != null && item.icon != "") ...[ - ClipRRect( - borderRadius: BorderRadius.circular(1000), - child: Image.asset( - "assets/countdown/${item.icon}", - width: 38, - height: 38, + return GridItemAnimator( + index: index, + child: Container( + decoration: BoxDecoration( + color: FluentTheme.of(context).cardColor, + borderRadius: BorderRadius.circular(12), + ), + child: Padding( + padding: const EdgeInsets.all(12), + child: Row( + children: [ + if (item.icon != null && item.icon != "") ...[ + ClipRRect( + borderRadius: BorderRadius.circular(1000), + child: Image.asset( + "assets/countdown/${item.icon}", + width: 38, + height: 38, + ), ), - ), - const SizedBox(width: 12), - ] else - const SizedBox(width: 50), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "${item.name}", - ), - CountdownTimeText( - targetTime: - DateTime.fromMillisecondsSinceEpoch( - item.time ?? 0), - ) - ], - ) - ], + const SizedBox(width: 12), + ] else + const SizedBox(width: 50), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "${item.name}", + ), + CountdownTimeText( + targetTime: + DateTime.fromMillisecondsSinceEpoch( + item.time ?? 0), + ) + ], + ) + ], + ), ), ), );