From 3d0e0804ca42b6f49cfcd094f2f7449f97eedafc Mon Sep 17 00:00:00 2001 From: Zhou Weidong <502333560@qq.com> Date: Mon, 19 Oct 2026 18:37:38 +0800 Subject: [PATCH 01/14] =?UTF-8?q?fix(app):=20=E4=BF=AE=E5=A4=8D=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E6=92=AD=E6=94=BE=E6=98=8E=E6=96=87HTTP=E4=B8=8E?= =?UTF-8?q?=E5=8F=8C=E7=BD=91=E7=BB=9C=E8=AE=BF=E9=97=AE=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/src/main/AndroidManifest.xml | 3 +- lib/core/config/app_config.dart | 28 ++++++++ lib/core/config/server_endpoint.dart | 12 ++-- .../data/services/auth_session_store.dart | 8 +-- lib/main.dart | 2 + pubspec.lock | 70 ++++++------------- pubspec.yaml | 8 +-- 7 files changed, 67 insertions(+), 64 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 91bbba2..2571b16 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -5,7 +5,8 @@ + android:icon="@mipmap/ic_launcher" + android:usesCleartextTraffic="true"> probeAndApplyBaseUrl() async { + try { + final client = HttpClient() + ..connectionTimeout = const Duration(seconds: 2); + final request = await client.getUrl( + Uri.parse('$lanBaseUrl/app/categories'), + ); + final response = await request.close().timeout(const Duration(seconds: 2)); + await response.drain(); + client.close(force: true); + if (response.statusCode == 200) { + applyRuntimeBaseUrl(lanBaseUrl); + return; + } + } catch (_) { + // 内网不可达,回落到公网。 + } + applyRuntimeBaseUrl( + compiledBaseUrl.isNotEmpty ? compiledBaseUrl : defaultBaseUrl, + ); + } + /// 后端返回的是相对路径(/files/...),这里补上服务地址。 static String mediaUrl(String path) { if (path.isEmpty) return ''; diff --git a/lib/core/config/server_endpoint.dart b/lib/core/config/server_endpoint.dart index 332eb6b..37355fc 100644 --- a/lib/core/config/server_endpoint.dart +++ b/lib/core/config/server_endpoint.dart @@ -39,11 +39,11 @@ abstract final class ServerEndpoint { /// In release builds this returns immediately without reading preferences. static Future load({ bool debug = kDebugMode, - SharedPreferencesAsync? preferences, + SharedPreferences? preferences, }) async { if (!debug) return; try { - final prefs = preferences ?? SharedPreferencesAsync(); + final prefs = preferences ?? await SharedPreferences.getInstance(); final stored = await prefs.getString(preferenceKey); AppConfig.applyRuntimeBaseUrl( resolve( @@ -60,12 +60,12 @@ abstract final class ServerEndpoint { /// Persists a normalized runtime endpoint. static Future save( String raw, { - SharedPreferencesAsync? preferences, + SharedPreferences? preferences, }) async { final normalized = normalize(raw); if (normalized == null) return false; try { - await (preferences ?? SharedPreferencesAsync()).setString( + await (preferences ?? await SharedPreferences.getInstance()).setString( preferenceKey, normalized, ); @@ -76,9 +76,9 @@ abstract final class ServerEndpoint { } /// Removes the persisted runtime endpoint. - static Future clear({SharedPreferencesAsync? preferences}) async { + static Future clear({SharedPreferences? preferences}) async { try { - await (preferences ?? SharedPreferencesAsync()).remove(preferenceKey); + await (preferences ?? await SharedPreferences.getInstance()).remove(preferenceKey); } catch (_) { // Clearing an optional developer override is best effort. } diff --git a/lib/core/data/services/auth_session_store.dart b/lib/core/data/services/auth_session_store.dart index 1586759..e03cc6b 100644 --- a/lib/core/data/services/auth_session_store.dart +++ b/lib/core/data/services/auth_session_store.dart @@ -23,7 +23,7 @@ class AuthSessionStore { Future deviceId() async { if (_cachedDeviceId != null) return _cachedDeviceId!; - final prefs = SharedPreferencesAsync(); + final prefs = await SharedPreferences.getInstance(); var value = await prefs.getString(_kDeviceId) ?? ''; if (value.isEmpty) { final random = Random(); @@ -37,7 +37,7 @@ class AuthSessionStore { } Future read() async { - final prefs = SharedPreferencesAsync(); + final prefs = await SharedPreferences.getInstance(); final accessToken = await prefs.getString(_kAccessToken) ?? ''; final refreshToken = await prefs.getString(_kRefreshToken) ?? ''; if (accessToken.isEmpty || refreshToken.isEmpty) return null; @@ -58,14 +58,14 @@ class AuthSessionStore { } Future save(AuthSession session) async { - final prefs = SharedPreferencesAsync(); + final prefs = await SharedPreferences.getInstance(); await prefs.setString(_kAccessToken, session.accessToken); await prefs.setString(_kRefreshToken, session.refreshToken); await prefs.setString(_kUser, jsonEncode(session.user.toJson())); } Future clear() async { - final prefs = SharedPreferencesAsync(); + final prefs = await SharedPreferences.getInstance(); await prefs.remove(_kAccessToken); await prefs.remove(_kRefreshToken); await prefs.remove(_kUser); diff --git a/lib/main.dart b/lib/main.dart index cfc68ce..bb45154 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'app.dart'; +import 'core/config/app_config.dart'; import 'core/config/server_endpoint.dart'; Future main() async { @@ -12,5 +13,6 @@ Future main() async { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]), ServerEndpoint.load(), ]); + await AppConfig.probeAndApplyBaseUrl(); runApp(const LumaDramaApp()); } diff --git a/pubspec.lock b/pubspec.lock index 2db1ec3..7dc0e15 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -61,10 +61,10 @@ packages: dependency: transitive description: name: clock - sha256: e51d50bca3217c9a9fa2b41a30e4a38971133f5f9ec7a3d57bae095007f1d28e + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.3" + version: "1.1.2" collection: dependency: transitive description: @@ -208,26 +208,10 @@ packages: dependency: transitive description: name: intl - sha256: "1ca20c894b1717686a2319b8548763d812bc0aabdac580420a44c5178c57a867" + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" url: "https://pub.flutter-io.cn" source: hosted - version: "0.20.3" - jni: - dependency: transitive - description: - name: jni - sha256: "6b9ca0602fef0230e83149afbe3f9f8227e94f2bbe84a1da4f14d699742f402d" - url: "https://pub.flutter-io.cn" - source: hosted - version: "1.1.0" - jni_util: - dependency: transitive - description: - name: jni_util - sha256: "1ba86da04a5f2bf18fde2edb235587e70c5b0fc5bd4ba955f46b00942c3fc35f" - url: "https://pub.flutter-io.cn" - source: hosted - version: "1.0.0" + version: "0.20.2" json_annotation: dependency: transitive description: @@ -272,10 +256,10 @@ packages: dependency: transitive description: name: matcher - sha256: "31bd099b47c10cd1aeb55146a2d46ce0277630ecef3f7dae54ad7873f36696cd" + sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 url: "https://pub.flutter-io.cn" source: hosted - version: "0.12.20" + version: "0.12.19" material_color_utilities: dependency: transitive description: @@ -288,10 +272,10 @@ packages: dependency: transitive description: name: meta - sha256: "307249ce4ff29d58a18e97f6345f539382eb9c9c29ecda628900f31de0443dd9" + sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349" url: "https://pub.flutter-io.cn" source: hosted - version: "1.19.0" + version: "1.18.0" mime: dependency: transitive description: @@ -308,14 +292,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" - package_config: - dependency: transitive - description: - name: package_config - sha256: ffcf4cf3d6c0b74ac43708d9f56625506e8a68aa935abe9d267a7330f320eb5d - url: "https://pub.flutter-io.cn" - source: hosted - version: "3.0.0" path: dependency: transitive description: @@ -392,26 +368,26 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: "1e85e0dccf5b4a016077fea7dfbb4a7cb39c759ac1596fcf60c06deadb7da91f" + sha256: "95f9997ca1fb9799d494d0cb2a780fd7be075818d59f00c43832ed112b158a82" url: "https://pub.flutter-io.cn" source: hosted - version: "2.5.6" + version: "2.3.3" shared_preferences_android: - dependency: transitive + dependency: "direct main" description: name: shared_preferences_android - sha256: b90caa27669d5f3ef9918d55343b44000f088ee9d4685ed822310848004c793e + sha256: "1e12aafe408aa50da80edfd679a2a6bf63ba7ab37c7fa98286da459a757b3399" url: "https://pub.flutter-io.cn" source: hosted - version: "2.5.0" + version: "2.4.28" shared_preferences_foundation: - dependency: "direct overridden" + dependency: transitive description: name: shared_preferences_foundation - sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f" + sha256: "2ec3934efa51e46117f23031cc141b8fc878e8525b94ec1ea4f7f586cf1b47ea" url: "https://pub.flutter-io.cn" source: hosted - version: "2.5.6" + version: "2.5.7" shared_preferences_linux: dependency: transitive description: @@ -421,7 +397,7 @@ packages: source: hosted version: "2.4.1" shared_preferences_platform_interface: - dependency: "direct dev" + dependency: transitive description: name: shared_preferences_platform_interface sha256: "649dc798a33931919ea356c4305c2d1f81619ea6e92244070b520187b5140ef9" @@ -461,10 +437,10 @@ packages: dependency: transitive description: name: stack_trace - sha256: "277654b3034d17ac6f9f1cb5595db011b1d5d41e8806866db28e0abaa101c490" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.flutter-io.cn" source: hosted - version: "1.12.2" + version: "1.12.1" stream_channel: dependency: transitive description: @@ -501,10 +477,10 @@ packages: dependency: transitive description: name: test_api - sha256: "2a122cbe059f8b610d3a5415f42e255b6c17b1f21eee1d960f31080237fb4f11" + sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e" url: "https://pub.flutter-io.cn" source: hosted - version: "0.7.12" + version: "0.7.11" typed_data: dependency: transitive description: @@ -517,10 +493,10 @@ packages: dependency: transitive description: name: vector_math - sha256: "92b9910f66ed1057fd4da7b040ae7c74cafacf885bdc81be496928d5049b032d" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.flutter-io.cn" source: hosted - version: "2.4.3" + version: "2.2.0" video_player: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 3c31839..092293d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -40,7 +40,8 @@ dependencies: dio: ^5.7.0 provider: ^6.1.5+1 video_player: ^2.14.0 - shared_preferences: ^2.5.5 + shared_preferences: 2.3.3 + shared_preferences_android: 2.4.28 flutter_localizations: sdk: flutter @@ -59,13 +60,8 @@ dev_dependencies: # package. See that file for information about deactivating specific lint # rules and activating additional ones. flutter_lints: ^6.0.0 - shared_preferences_platform_interface: ^2.4.2 flutter_launcher_icons: ^0.14.4 -# Xcode 16.2 / Swift 6.0.3 cannot parse the trailing comma in foundation 2.6.0. -dependency_overrides: - shared_preferences_foundation: 2.5.6 - # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec From 814b2c0b7be516913b30ad59ad73546ac3175ddd Mon Sep 17 00:00:00 2001 From: Zhou Weidong <502333560@qq.com> Date: Mon, 19 Oct 2026 21:12:16 +0800 Subject: [PATCH 02/14] =?UTF-8?q?chore(config):=20=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=9C=B0=E5=9D=80=E6=94=B9=E4=B8=BA=E5=85=AC?= =?UTF-8?q?=E7=BD=91=2039.162.50.99:8081?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/core/config/app_config.dart | 11 +++++------ test/config/server_endpoint_test.dart | 10 +++++----- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/core/config/app_config.dart b/lib/core/config/app_config.dart index ae4f632..de06a15 100644 --- a/lib/core/config/app_config.dart +++ b/lib/core/config/app_config.dart @@ -9,14 +9,13 @@ import 'package:flutter/foundation.dart'; class AppConfig { const AppConfig._(); - /// 真机默认使用的开发机局域网地址。 + /// 真机默认使用的服务地址。 /// - /// 这个地址跟着电脑所在的网络走,换网络后要用 - /// `ipconfig getifaddr en0` 重新确认。默认值只改这一行。 - static const String devHostBaseUrl = 'http://192.168.31.187:8081'; + /// 当前指向公网服务;换地址时改这一行。 + static const String devHostBaseUrl = 'http://39.162.50.99:8081'; - /// 办公室内网(Wi-Fi)直连地址,双网络自动切换时的首选。 - static const String lanBaseUrl = 'http://192.168.31.250:8081'; + /// 双网络探测的首选地址,当前与默认地址一致(公网服务)。 + static const String lanBaseUrl = 'http://39.162.50.99:8081'; static const String _loopbackBaseUrl = 'http://127.0.0.1:8081'; diff --git a/test/config/server_endpoint_test.dart b/test/config/server_endpoint_test.dart index 7d97b77..aa80ea9 100644 --- a/test/config/server_endpoint_test.dart +++ b/test/config/server_endpoint_test.dart @@ -57,13 +57,13 @@ void main() { }); test('should_use_the_configured_lan_address_for_device_default', () { - expect(AppConfig.devHostBaseUrl, 'http://192.168.31.187:8081'); + expect(AppConfig.devHostBaseUrl, 'http://39.162.50.99:8081'); }); test('should_apply_stored_url_only_when_debug_is_enabled', () async { SharedPreferencesAsyncPlatform.instance = InMemorySharedPreferencesAsync.withData({ - ServerEndpoint.preferenceKey: ' http://192.168.31.187:8081/ ', + ServerEndpoint.preferenceKey: ' http://39.162.50.99:8081/ ', }); final original = AppConfig.apiBaseUrl; @@ -71,7 +71,7 @@ void main() { expect(AppConfig.apiBaseUrl, original); await ServerEndpoint.load(debug: true); - expect(AppConfig.apiBaseUrl, 'http://192.168.31.187:8081'); + expect(AppConfig.apiBaseUrl, 'http://39.162.50.99:8081'); }); test('should_save_normalized_url_and_clear_override', () async { @@ -81,10 +81,10 @@ void main() { isNull, ); - expect(await ServerEndpoint.save(' http://192.168.31.187:8081/ '), isTrue); + expect(await ServerEndpoint.save(' http://39.162.50.99:8081/ '), isTrue); expect( await SharedPreferencesAsync().getString(ServerEndpoint.preferenceKey), - 'http://192.168.31.187:8081', + 'http://39.162.50.99:8081', ); await ServerEndpoint.clear(); From 6318ca24ec2b6e2a6830e9b5c300c91c9dc1d3f1 Mon Sep 17 00:00:00 2001 From: Zhou Weidong <502333560@qq.com> Date: Fri, 23 Oct 2026 01:06:07 +0800 Subject: [PATCH 03/14] =?UTF-8?q?feat(splash):=20=E7=BC=A9=E7=9F=AD?= =?UTF-8?q?=E5=BC=80=E5=B1=8F=E5=81=9C=E7=95=99=E5=B9=B6=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E5=BC=80=E5=B1=8F=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/stormg/lumadrama/MainActivity.kt | 3 + .../drawable-night-v21/launch_background.xml | 6 ++ .../res/drawable-night/launch_background.xml | 6 ++ .../main/res/drawable-nodpi/splash_brand.png | Bin 0 -> 21352 bytes .../main/res/drawable-nodpi/splash_screen.png | Bin 0 -> 20608 bytes .../res/drawable-v21/launch_background.xml | 6 +- .../res/drawable-v31/launch_background.xml | 6 +- .../main/res/drawable/launch_background.xml | 6 +- .../src/main/res/values-night-v31/styles.xml | 2 + .../app/src/main/res/values-v31/styles.xml | 2 + ios/Runner/AppDelegate.swift | 2 +- .../LaunchImage.imageset/LaunchImage.png | Bin 69 -> 6127 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 69 -> 14321 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 69 -> 24380 bytes ios/Runner/Base.lproj/LaunchScreen.storyboard | 12 +-- lib/main.dart | 10 ++- lib/pages/home/home_view.dart | 81 +----------------- test/home/home_startup_splash_test.dart | 5 +- 18 files changed, 47 insertions(+), 100 deletions(-) create mode 100644 android/app/src/main/res/drawable-nodpi/splash_brand.png create mode 100644 android/app/src/main/res/drawable-nodpi/splash_screen.png diff --git a/android/app/src/main/kotlin/com/stormg/lumadrama/MainActivity.kt b/android/app/src/main/kotlin/com/stormg/lumadrama/MainActivity.kt index 7db28d2..8f25c38 100644 --- a/android/app/src/main/kotlin/com/stormg/lumadrama/MainActivity.kt +++ b/android/app/src/main/kotlin/com/stormg/lumadrama/MainActivity.kt @@ -36,6 +36,9 @@ class MainActivity : FlutterActivity() { private var imeInset = 0 override fun onCreate(savedInstanceState: Bundle?) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + splashScreen.setOnExitAnimationListener { screen -> screen.remove() } + } super.onCreate(savedInstanceState) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } diff --git a/android/app/src/main/res/drawable-night-v21/launch_background.xml b/android/app/src/main/res/drawable-night-v21/launch_background.xml index d933a92..35eaddd 100644 --- a/android/app/src/main/res/drawable-night-v21/launch_background.xml +++ b/android/app/src/main/res/drawable-night-v21/launch_background.xml @@ -1,4 +1,10 @@ + + + + diff --git a/android/app/src/main/res/drawable-night/launch_background.xml b/android/app/src/main/res/drawable-night/launch_background.xml index d933a92..35eaddd 100644 --- a/android/app/src/main/res/drawable-night/launch_background.xml +++ b/android/app/src/main/res/drawable-night/launch_background.xml @@ -1,4 +1,10 @@ + + + + diff --git a/android/app/src/main/res/drawable-nodpi/splash_brand.png b/android/app/src/main/res/drawable-nodpi/splash_brand.png new file mode 100644 index 0000000000000000000000000000000000000000..2ca5a392e7291be97a5a8d787ce322945cb82b6c GIT binary patch literal 21352 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 + + - + diff --git a/android/app/src/main/res/drawable-v31/launch_background.xml b/android/app/src/main/res/drawable-v31/launch_background.xml index 515a7fb..35eaddd 100644 --- a/android/app/src/main/res/drawable-v31/launch_background.xml +++ b/android/app/src/main/res/drawable-v31/launch_background.xml @@ -1,6 +1,10 @@ - + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml index f88598c..35eaddd 100644 --- a/android/app/src/main/res/drawable/launch_background.xml +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -1,6 +1,10 @@ + + - + diff --git a/android/app/src/main/res/values-night-v31/styles.xml b/android/app/src/main/res/values-night-v31/styles.xml index 9a38e8f..13a688d 100644 --- a/android/app/src/main/res/values-night-v31/styles.xml +++ b/android/app/src/main/res/values-night-v31/styles.xml @@ -8,6 +8,8 @@ false shortEdges #000000 + @drawable/splash_brand + 0