lilu 1 месяц назад
Родитель
Сommit
b0aa1d9500

BIN
android/app/src/main/res/drawable/background_light.png


+ 9 - 0
android/app/src/main/res/drawable/launch_background_light.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <bitmap android:gravity="fill" android:src="@drawable/background_light"/>
+    </item>
+    <item>
+        <bitmap android:gravity="center" android:src="@drawable/splash"/>
+    </item>
+</layer-list>

+ 2 - 2
android/app/src/main/res/values-v31/styles.xml

@@ -6,9 +6,9 @@
         <item name="android:windowFullscreen">false</item>
         <item name="android:windowDrawsSystemBarBackgrounds">false</item>
         <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
-        <item name="android:windowSplashScreenBackground">#000000</item>
+        <item name="android:windowSplashScreenBackground">#FFFFFF</item>
         <item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
-        <item name="android:windowSplashScreenIconBackgroundColor">#000000</item>
+        <item name="android:windowSplashScreenIconBackgroundColor">#FFFFFF</item>
     </style>
     <!-- Theme applied to the Android Window as soon as the process has started.
          This theme determines the color of the Android Window while your

+ 1 - 1
android/app/src/main/res/values/styles.xml

@@ -4,7 +4,7 @@
     <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
         <!-- Show a splash screen on the activity. Automatically removed when
              the Flutter engine draws its first frame -->
-        <item name="android:windowBackground">@drawable/launch_background</item>
+        <item name="android:windowBackground">@drawable/launch_background_light</item>
         <item name="android:forceDarkAllowed">false</item>
         <item name="android:windowFullscreen">false</item>
         <item name="android:windowDrawsSystemBarBackgrounds">false</item>

+ 34 - 21
lib/app/app.dart

@@ -98,28 +98,41 @@ class App extends StatelessWidget {
               child: const SizedBox.shrink(), // 不显示任何东西
             ),
           ),
-          if (Configs.debug)
-            Positioned(
-              bottom: 100,
-              right: 10,
-              child: ClickOpacity(
-                child: Container(
-                  width: 40,
-                  height: 40,
-                  decoration: BoxDecoration(
-                    color: Get.reactiveTheme.primaryColor.withValues(
-                      alpha: 0.5,
-                    ),
-                    borderRadius: BorderRadius.circular(40),
-                  ),
-                  child: Icon(Icons.adb, color: Get.reactiveTheme.primaryColor),
-                ),
-                onTap: () {
-                  // 使用简化版开发者工具
-                  IXDeveloperTools.show();
-                },
-              ),
+          Positioned(
+            top: 100,
+            right: 0,
+            width: 100,
+            height: 100,
+            child: TripleTapDetector(
+              requiredTaps: 10,
+              onTripleTap: () async {
+                IXDeveloperTools.show();
+              },
+              child: const SizedBox.shrink(), // 不显示任何东西
             ),
+          ),
+          // if (Configs.debug)
+          //   Positioned(
+          //     bottom: 100,
+          //     right: 10,
+          //     child: ClickOpacity(
+          //       child: Container(
+          //         width: 40,
+          //         height: 40,
+          //         decoration: BoxDecoration(
+          //           color: Get.reactiveTheme.primaryColor.withValues(
+          //             alpha: 0.5,
+          //           ),
+          //           borderRadius: BorderRadius.circular(40),
+          //         ),
+          //         child: Icon(Icons.adb, color: Get.reactiveTheme.primaryColor),
+          //       ),
+          //       onTap: () {
+          //         // 使用简化版开发者工具
+          //         IXDeveloperTools.show();
+          //       },
+          //     ),
+          //   ),
         ],
       ),
     );

+ 1 - 0
lib/app/modules/home/views/home_view.dart

@@ -597,6 +597,7 @@ class HomeView extends BaseView<HomeController> {
                                   mainAxisAlignment: MainAxisAlignment.center,
                                   crossAxisAlignment: CrossAxisAlignment.center,
                                   children: [
+                                    SizedBox(width: 2.w),
                                     // 国旗图标
                                     CountryIcon(
                                       countryCode: location.country ?? '',

+ 1 - 0
lib/app/modules/setting/views/setting_view.dart

@@ -25,6 +25,7 @@ import '../../../components/ix_snackbar.dart';
 import '../../../constants/iconfont/iconfont.dart';
 import '../../../routes/app_pages.dart';
 import '../../../widgets/ix_app_bar.dart';
+import '../../../widgets/triple_tap_detector.dart';
 import '../controllers/setting_controller.dart';
 
 class SettingView extends BaseView<SettingController> {

+ 2 - 0
lib/config/translations/en_US/en_us_translation.dart

@@ -443,6 +443,8 @@ Map<String, String> enUs = {
   Strings.vpnServiceEmptyError: 'VPN service is unavailable',
   Strings.vpnRouterError: 'VPN routing configuration error',
   Strings.vpnPermissionDeniedError: 'VPN permission denied',
+  Strings.vpnRPCCallFailed: 'VPN service communication error',
+  Strings.vpnRPCReturnFalse: 'VPN service failed to start',
 
   // Remain time
   Strings.remainTime: 'Remain time',

+ 2 - 0
lib/config/translations/zh_CN/zh_cn_translation.dart

@@ -391,6 +391,8 @@ Map<String, String> zhCN = {
   Strings.vpnServiceEmptyError: 'VPN 服务不可用',
   Strings.vpnRouterError: 'VPN路由配置错误',
   Strings.vpnPermissionDeniedError: 'VPN 权限被拒绝',
+  Strings.vpnRPCCallFailed: 'VPN 服务通信错误',
+  Strings.vpnRPCReturnFalse: 'VPN 服务启动失败',
 
   // Remain time
   Strings.remainTime: '剩余时长',