BaiLuoYan пре 1 недеља
родитељ
комит
ca5d2a6298
85 измењених фајлова са 267 додато и 215 уклоњено
  1. 77 0
      android/app/src/main/kotlin/com/flashlink/vpn/MainActivity.kt
  2. BIN
      android/app/src/main/res/drawable-hdpi/android12splash.png
  3. BIN
      android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png
  4. BIN
      android/app/src/main/res/drawable-hdpi/ic_launcher_monochrome.png
  5. BIN
      android/app/src/main/res/drawable-hdpi/splash.png
  6. BIN
      android/app/src/main/res/drawable-mdpi/android12splash.png
  7. BIN
      android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png
  8. BIN
      android/app/src/main/res/drawable-mdpi/ic_launcher_monochrome.png
  9. BIN
      android/app/src/main/res/drawable-mdpi/splash.png
  10. BIN
      android/app/src/main/res/drawable-night-hdpi/android12splash.png
  11. BIN
      android/app/src/main/res/drawable-night-mdpi/android12splash.png
  12. BIN
      android/app/src/main/res/drawable-night-xhdpi/android12splash.png
  13. BIN
      android/app/src/main/res/drawable-night-xxhdpi/android12splash.png
  14. BIN
      android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png
  15. BIN
      android/app/src/main/res/drawable-xhdpi/android12splash.png
  16. BIN
      android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png
  17. BIN
      android/app/src/main/res/drawable-xhdpi/ic_launcher_monochrome.png
  18. BIN
      android/app/src/main/res/drawable-xhdpi/splash.png
  19. BIN
      android/app/src/main/res/drawable-xxhdpi/android12splash.png
  20. BIN
      android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png
  21. BIN
      android/app/src/main/res/drawable-xxhdpi/ic_launcher_monochrome.png
  22. BIN
      android/app/src/main/res/drawable-xxhdpi/splash.png
  23. BIN
      android/app/src/main/res/drawable-xxxhdpi/android12splash.png
  24. BIN
      android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png
  25. BIN
      android/app/src/main/res/drawable-xxxhdpi/ic_launcher_monochrome.png
  26. BIN
      android/app/src/main/res/drawable-xxxhdpi/splash.png
  27. BIN
      android/app/src/main/res/mipmap-hdpi/launcher_icon.png
  28. BIN
      android/app/src/main/res/mipmap-mdpi/launcher_icon.png
  29. BIN
      android/app/src/main/res/mipmap-xhdpi/launcher_icon.png
  30. BIN
      android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png
  31. BIN
      android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png
  32. 2 2
      android/app/src/main/res/values-v31/styles.xml
  33. BIN
      assets/icon.png
  34. BIN
      assets/icon_f.png
  35. BIN
      assets/icon_splash.png
  36. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
  37. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
  38. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
  39. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
  40. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
  41. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
  42. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
  43. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
  44. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
  45. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
  46. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png
  47. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png
  48. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
  49. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
  50. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
  51. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
  52. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
  53. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
  54. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
  55. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
  56. BIN
      ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
  57. BIN
      ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
  58. BIN
      ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
  59. BIN
      ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
  60. 65 65
      ios/Runner/Info.plist
  61. 1 1
      lib/app/api/core/api_core_paths.dart
  62. 1 1
      lib/app/constants/configs.dart
  63. BIN
      macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
  64. BIN
      macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
  65. BIN
      macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
  66. BIN
      macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
  67. BIN
      macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
  68. BIN
      macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
  69. BIN
      macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
  70. BIN
      web/favicon.png
  71. BIN
      web/icons/Icon-192.png
  72. BIN
      web/icons/Icon-512.png
  73. BIN
      web/icons/Icon-maskable-192.png
  74. BIN
      web/icons/Icon-maskable-512.png
  75. 88 113
      web/index.html
  76. 33 33
      web/manifest.json
  77. BIN
      web/splash/img/dark-1x.png
  78. BIN
      web/splash/img/dark-2x.png
  79. BIN
      web/splash/img/dark-3x.png
  80. BIN
      web/splash/img/dark-4x.png
  81. BIN
      web/splash/img/light-1x.png
  82. BIN
      web/splash/img/light-2x.png
  83. BIN
      web/splash/img/light-3x.png
  84. BIN
      web/splash/img/light-4x.png
  85. BIN
      windows/runner/resources/app_icon.ico

+ 77 - 0
android/app/src/main/kotlin/com/flashlink/vpn/MainActivity.kt

@@ -0,0 +1,77 @@
+package com.flashlink.vpn
+
+import android.app.ComponentCaller
+import android.content.Intent
+import android.graphics.Color
+import io.flutter.embedding.android.FlutterActivity
+import io.flutter.embedding.engine.FlutterEngine
+import android.util.Log
+import androidx.core.view.WindowCompat
+
+class MainActivity: FlutterActivity() {
+
+    private lateinit var coreApiImpl: CoreApiImpl
+    companion object {
+        private const val TAG = "MainActivity"
+    }
+
+    override fun onCreate(savedInstanceState: android.os.Bundle?) {
+        super.onCreate(savedInstanceState)
+        VLog.init(this, "client")
+        WindowCompat.setDecorFitsSystemWindows(window, false)
+
+        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
+            window.isNavigationBarContrastEnforced = false
+            window.navigationBarColor = Color.TRANSPARENT
+            window.statusBarColor = Color.TRANSPARENT
+        } else if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
+            window.insetsController?.let { controller ->
+                controller.systemBarsBehavior =
+                    android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
+                controller.setSystemBarsAppearance(
+                    android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS,
+                    android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS
+                )
+            }
+            window.navigationBarColor = Color.TRANSPARENT
+            window.statusBarColor = Color.TRANSPARENT
+        } else {
+            window.decorView.systemUiVisibility = (
+                android.view.View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
+                android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
+                android.view.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+            )
+            window.navigationBarColor = Color.TRANSPARENT
+            window.statusBarColor = Color.TRANSPARENT
+        }
+
+        Log.d(TAG, "MainActivity onCreate - 进程ID: ${android.os.Process.myPid()}")
+    }
+
+    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
+        super.configureFlutterEngine(flutterEngine)
+        val messenger = flutterEngine.dartExecutor.binaryMessenger
+
+        coreApiImpl = CoreApiImpl(this)
+        coreApiImpl.initXrayApi()
+        coreApiImpl.setVpnServiceEventListener()
+        CoreApi.setUp(messenger, coreApiImpl)
+        coreApiImpl.registerEventStreamHandler(messenger)
+
+        Log.d(TAG, "CoreApi 和事件流处理器已配置完成")
+    }
+
+    override fun onActivityResult(
+        requestCode: Int,
+        resultCode: Int,
+        data: Intent?
+    ) {
+        super.onActivityResult(requestCode, resultCode, data)
+        coreApiImpl.onActivityResult(requestCode, resultCode, data)
+    }
+
+    override fun onDestroy() {
+        coreApiImpl.unInitXrayApi()
+        super.onDestroy()
+    }
+}

BIN
android/app/src/main/res/drawable-hdpi/android12splash.png


BIN
android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/drawable-hdpi/ic_launcher_monochrome.png


BIN
android/app/src/main/res/drawable-hdpi/splash.png


BIN
android/app/src/main/res/drawable-mdpi/android12splash.png


BIN
android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/drawable-mdpi/ic_launcher_monochrome.png


BIN
android/app/src/main/res/drawable-mdpi/splash.png


BIN
android/app/src/main/res/drawable-night-hdpi/android12splash.png


BIN
android/app/src/main/res/drawable-night-mdpi/android12splash.png


BIN
android/app/src/main/res/drawable-night-xhdpi/android12splash.png


BIN
android/app/src/main/res/drawable-night-xxhdpi/android12splash.png


BIN
android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png


BIN
android/app/src/main/res/drawable-xhdpi/android12splash.png


BIN
android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/drawable-xhdpi/ic_launcher_monochrome.png


BIN
android/app/src/main/res/drawable-xhdpi/splash.png


BIN
android/app/src/main/res/drawable-xxhdpi/android12splash.png


BIN
android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/drawable-xxhdpi/ic_launcher_monochrome.png


BIN
android/app/src/main/res/drawable-xxhdpi/splash.png


BIN
android/app/src/main/res/drawable-xxxhdpi/android12splash.png


BIN
android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/drawable-xxxhdpi/ic_launcher_monochrome.png


BIN
android/app/src/main/res/drawable-xxxhdpi/splash.png


BIN
android/app/src/main/res/mipmap-hdpi/launcher_icon.png


BIN
android/app/src/main/res/mipmap-mdpi/launcher_icon.png


BIN
android/app/src/main/res/mipmap-xhdpi/launcher_icon.png


BIN
android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png


BIN
android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png


+ 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">#FFFFFF</item>
+        <item name="android:windowSplashScreenBackground">#000000</item>
         <item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
-        <item name="android:windowSplashScreenIconBackgroundColor">#FFFFFF</item>
+        <item name="android:windowSplashScreenIconBackgroundColor">#000000</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


BIN
assets/icon_f.png


BIN
assets/icon_splash.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png


BIN
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png


BIN
ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png


BIN
ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png


BIN
ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png


+ 65 - 65
ios/Runner/Info.plist

@@ -1,68 +1,68 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
-  <dict>
-    <key>CFBundleDevelopmentRegion</key>
-    <string>$(DEVELOPMENT_LANGUAGE)</string>
-    <key>CFBundleDisplayName</key>
-    <string>FlashLink VPN</string>
-    <key>CFBundleExecutable</key>
-    <string>$(EXECUTABLE_NAME)</string>
-    <key>CFBundleIdentifier</key>
-    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-    <key>CFBundleInfoDictionaryVersion</key>
-    <string>6.0</string>
-    <key>CFBundleName</key>
-    <string>FlashLink VPN</string>
-    <key>CFBundlePackageType</key>
-    <string>APPL</string>
-    <key>CFBundleShortVersionString</key>
-    <string>$(FLUTTER_BUILD_NAME)</string>
-    <key>CFBundleSignature</key>
-    <string>????</string>
-    <key>CFBundleVersion</key>
-    <string>$(FLUTTER_BUILD_NUMBER)</string>
-    <key>LSRequiresIPhoneOS</key>
-    <true/>
-    <key>UILaunchStoryboardName</key>
-    <string>LaunchScreen</string>
-    <key>UIMainStoryboardFile</key>
-    <string>Main</string>
-    <key>UISupportedInterfaceOrientations</key>
-    <array>
-      <string>UIInterfaceOrientationPortrait</string>
-      <string>UIInterfaceOrientationLandscapeLeft</string>
-      <string>UIInterfaceOrientationLandscapeRight</string>
-    </array>
-    <key>UISupportedInterfaceOrientations~ipad</key>
-    <array>
-      <string>UIInterfaceOrientationPortrait</string>
-      <string>UIInterfaceOrientationPortraitUpsideDown</string>
-      <string>UIInterfaceOrientationLandscapeLeft</string>
-      <string>UIInterfaceOrientationLandscapeRight</string>
-    </array>
-    <key>CADisableMinimumFrameDurationOnPhone</key>
-    <true/>
-    <key>UIApplicationSupportsIndirectInputEvents</key>
-    <true/>
-    <key>UIStatusBarHidden</key>
-    <false/>
-    <key>NSPhotoLibraryAddUsageDescription</key>
-    <string>We need access to save your Pre Code image to your photo library.</string>
-    <key>NSPhotoLibraryUsageDescription</key>
-    <string>We need access to save your Pre Code image to your photo library.</string>
-    <!-- WebView 相关配置 -->
-    <key>NSAppTransportSecurity</key>
-    <dict>
-      <key>NSAllowsArbitraryLoads</key>
-      <true/>
-      <key>NSAllowsLocalNetworking</key>
-      <true/>
-    </dict>
-    <!-- WebView 可能需要的相机和麦克风权限 -->
-    <key>NSCameraUsageDescription</key>
-    <string>This app needs camera access to use camera features in web pages.</string>
-    <key>NSMicrophoneUsageDescription</key>
-    <string>This app needs microphone access to use audio features in web pages.</string>
-  </dict>
-</plist>
+	<dict>
+		<key>CFBundleDevelopmentRegion</key>
+		<string>$(DEVELOPMENT_LANGUAGE)</string>
+		<key>CFBundleDisplayName</key>
+		<string>FlashLink VPN</string>
+		<key>CFBundleExecutable</key>
+		<string>$(EXECUTABLE_NAME)</string>
+		<key>CFBundleIdentifier</key>
+		<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+		<key>CFBundleInfoDictionaryVersion</key>
+		<string>6.0</string>
+		<key>CFBundleName</key>
+		<string>FlashLink VPN</string>
+		<key>CFBundlePackageType</key>
+		<string>APPL</string>
+		<key>CFBundleShortVersionString</key>
+		<string>$(FLUTTER_BUILD_NAME)</string>
+		<key>CFBundleSignature</key>
+		<string>????</string>
+		<key>CFBundleVersion</key>
+		<string>$(FLUTTER_BUILD_NUMBER)</string>
+		<key>LSRequiresIPhoneOS</key>
+		<true/>
+		<key>UILaunchStoryboardName</key>
+		<string>LaunchScreen</string>
+		<key>UIMainStoryboardFile</key>
+		<string>Main</string>
+		<key>UISupportedInterfaceOrientations</key>
+		<array>
+			<string>UIInterfaceOrientationPortrait</string>
+			<string>UIInterfaceOrientationLandscapeLeft</string>
+			<string>UIInterfaceOrientationLandscapeRight</string>
+		</array>
+		<key>UISupportedInterfaceOrientations~ipad</key>
+		<array>
+			<string>UIInterfaceOrientationPortrait</string>
+			<string>UIInterfaceOrientationPortraitUpsideDown</string>
+			<string>UIInterfaceOrientationLandscapeLeft</string>
+			<string>UIInterfaceOrientationLandscapeRight</string>
+		</array>
+		<key>CADisableMinimumFrameDurationOnPhone</key>
+		<true/>
+		<key>UIApplicationSupportsIndirectInputEvents</key>
+		<true/>
+		<key>UIStatusBarHidden</key>
+		<false/>
+		<key>NSPhotoLibraryAddUsageDescription</key>
+		<string>We need access to save your Pre Code image to your photo library.</string>
+		<key>NSPhotoLibraryUsageDescription</key>
+		<string>We need access to save your Pre Code image to your photo library.</string>
+		<!-- WebView 相关配置 -->
+		<key>NSAppTransportSecurity</key>
+		<dict>
+			<key>NSAllowsArbitraryLoads</key>
+			<true/>
+			<key>NSAllowsLocalNetworking</key>
+			<true/>
+		</dict>
+		<!-- WebView 可能需要的相机和麦克风权限 -->
+		<key>NSCameraUsageDescription</key>
+		<string>This app needs camera access to use camera features in web pages.</string>
+		<key>NSMicrophoneUsageDescription</key>
+		<string>This app needs microphone access to use audio features in web pages.</string>
+	</dict>
+</plist>

+ 1 - 1
lib/app/api/core/api_core_paths.dart

@@ -77,7 +77,7 @@ class ApiCorePaths {
   static const String uploadVideo = '$_ver/issue/uploadVideo';
 
   /// 获取调度信息
-  static const String getDispatchInfo = '$_ver/router/getNodes';
+  static const String getDispatchInfo = '$_ver/router/nodes';
 
   /// 获取所有节点
   static const String getLocations = '$_ver/app/getLocations';

+ 1 - 1
lib/app/constants/configs.dart

@@ -6,7 +6,7 @@ class Configs {
   static const String officialWebsiteHttp = "https://flashlink.me";
 
   // 调试相关
-  static var debug = false;
+  static var debug = true;
 
   static var assetUrl = "https://res.flashlink.me";
 

BIN
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png


BIN
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png


BIN
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png


BIN
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png


BIN
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png


BIN
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png


BIN
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png



BIN
web/icons/Icon-192.png


BIN
web/icons/Icon-512.png


BIN
web/icons/Icon-maskable-192.png


BIN
web/icons/Icon-maskable-512.png


+ 88 - 113
web/index.html

@@ -1,6 +1,4 @@
-<!doctype html>
-<html>
-  <head>
+<!DOCTYPE html><html><head>
     <!--
     If you are serving your web app in a path other than the root, change the
     href value below to reflect the base path you are serving from.
@@ -14,126 +12,103 @@
     This is a placeholder for base href that will be replaced by the value of
     the `--base-href` argument provided to `flutter build`.
   -->
-    <base href="$FLUTTER_BASE_HREF" />
+    <base href="$FLUTTER_BASE_HREF">
 
-    <meta charset="UTF-8" />
-    <meta content="IE=Edge" http-equiv="X-UA-Compatible" />
-    <meta name="description" content="A new Flutter project." />
+    <meta charset="UTF-8">
+    <meta content="IE=Edge" http-equiv="X-UA-Compatible">
+    <meta name="description" content="A new Flutter project.">
 
     <!-- iOS meta tags & icons -->
-    <meta name="mobile-web-app-capable" content="yes" />
-    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
-    <meta name="apple-mobile-web-app-title" content="FlashLink" />
-    <link rel="apple-touch-icon" href="icons/Icon-192.png" />
+    <meta name="mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta name="apple-mobile-web-app-title" content="FlashLink">
+    <link rel="apple-touch-icon" href="icons/Icon-192.png">
 
     <!-- Favicon -->
-    <link rel="icon" type="image/png" href="favicon.png" />
+    <link rel="icon" type="image/png" href="favicon.png">
 
     <title>FlashLink</title>
-    <link rel="manifest" href="manifest.json" />
+    <link rel="manifest" href="manifest.json">
 
-    <meta
-      content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
-      name="viewport"
-    />
+    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport">
 
+    
+    
     <style id="splash-screen-style">
-      html {
-        height: 100%;
-      }
-
-      body {
-        margin: 0;
-        min-height: 100%;
-        background-color: #000000;
-        background-size: 100% 100%;
-      }
-
-      .center {
-        margin: 0;
-        position: absolute;
-        top: 50%;
-        left: 50%;
-        -ms-transform: translate(-50%, -50%);
-        transform: translate(-50%, -50%);
-      }
-
-      .contain {
-        display: block;
-        width: 100%;
-        height: 100%;
-        object-fit: contain;
-      }
-
-      .stretch {
-        display: block;
-        width: 100%;
-        height: 100%;
-      }
-
-      .cover {
-        display: block;
-        width: 100%;
-        height: 100%;
-        object-fit: cover;
-      }
-
-      .bottom {
-        position: absolute;
-        bottom: 0;
-        left: 50%;
-        -ms-transform: translate(-50%, 0);
-        transform: translate(-50%, 0);
-      }
-
-      .bottomLeft {
-        position: absolute;
-        bottom: 0;
-        left: 0;
-      }
-
-      .bottomRight {
-        position: absolute;
-        bottom: 0;
-        right: 0;
-      }
-    </style>
-    <script id="splash-screen-script">
-      function removeSplashFromWeb() {
-        document.getElementById("splash")?.remove();
-        document.getElementById("splash-branding")?.remove();
-        document.body.style.background = "transparent";
-      }
-    </script>
-  </head>
+    html {
+      height: 100%
+    }
+
+    body {
+      margin: 0;
+      min-height: 100%;
+      background-color: #000000;
+          background-size: 100% 100%;
+    }
+
+    .center {
+      margin: 0;
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      -ms-transform: translate(-50%, -50%);
+      transform: translate(-50%, -50%);
+    }
+
+    .contain {
+      display:block;
+      width:100%; height:100%;
+      object-fit: contain;
+    }
+
+    .stretch {
+      display:block;
+      width:100%; height:100%;
+    }
+
+    .cover {
+      display:block;
+      width:100%; height:100%;
+      object-fit: cover;
+    }
+
+    .bottom {
+      position: absolute;
+      bottom: 0;
+      left: 50%;
+      -ms-transform: translate(-50%, 0);
+      transform: translate(-50%, 0);
+    }
+
+    .bottomLeft {
+      position: absolute;
+      bottom: 0;
+      left: 0;
+    }
+
+    .bottomRight {
+      position: absolute;
+      bottom: 0;
+      right: 0;
+    }
+  </style>
+  <script id="splash-screen-script">
+    function removeSplashFromWeb() {
+      document.getElementById("splash")?.remove();
+      document.getElementById("splash-branding")?.remove();
+      document.body.style.background = "transparent";
+    }
+  </script>
+</head>
   <body>
-    <picture id="splash">
-      <source
-        srcset="
-          splash/img/light-1x.png 1x,
-          splash/img/light-2x.png 2x,
-          splash/img/light-3x.png 3x,
-          splash/img/light-4x.png 4x
-        "
-        media="(prefers-color-scheme: light)"
-      />
-      <source
-        srcset="
-          splash/img/dark-1x.png 1x,
-          splash/img/dark-2x.png 2x,
-          splash/img/dark-3x.png 3x,
-          splash/img/dark-4x.png 4x
-        "
-        media="(prefers-color-scheme: dark)"
-      />
-      <img
-        class="center"
-        aria-hidden="true"
-        src="splash/img/light-1x.png"
-        alt=""
-      />
-    </picture>
+  <picture id="splash">
+      <source srcset="splash/img/light-1x.png 1x, splash/img/light-2x.png 2x, splash/img/light-3x.png 3x, splash/img/light-4x.png 4x" media="(prefers-color-scheme: light)">
+      <source srcset="splash/img/dark-1x.png 1x, splash/img/dark-2x.png 2x, splash/img/dark-3x.png 3x, splash/img/dark-4x.png 4x" media="(prefers-color-scheme: dark)">
+      <img class="center" aria-hidden="true" src="splash/img/light-1x.png" alt="">
+  </picture>
+    
 
     <script src="flutter_bootstrap.js" async=""></script>
-  </body>
-</html>
+  
+
+</body></html>

+ 33 - 33
web/manifest.json

@@ -1,35 +1,35 @@
 {
-     "name": "FlashLink VPN",
-     "short_name": "FlashLink VPN",
-     "start_url": ".",
-     "display": "standalone",
-     "background_color": "#hexcode",
-     "theme_color": "#hexcode",
-     "description": "A new Flutter project.",
-     "orientation": "portrait-primary",
-     "prefer_related_applications": false,
-     "icons": [
-          {
-               "src": "icons/Icon-192.png",
-               "sizes": "192x192",
-               "type": "image/png"
-          },
-          {
-               "src": "icons/Icon-512.png",
-               "sizes": "512x512",
-               "type": "image/png"
-          },
-          {
-               "src": "icons/Icon-maskable-192.png",
-               "sizes": "192x192",
-               "type": "image/png",
-               "purpose": "maskable"
-          },
-          {
-               "src": "icons/Icon-maskable-512.png",
-               "sizes": "512x512",
-               "type": "image/png",
-               "purpose": "maskable"
-          }
-     ]
+    "name": "FlashLink VPN",
+    "short_name": "FlashLink VPN",
+    "start_url": ".",
+    "display": "standalone",
+    "background_color": "#hexcode",
+    "theme_color": "#hexcode",
+    "description": "A new Flutter project.",
+    "orientation": "portrait-primary",
+    "prefer_related_applications": false,
+    "icons": [
+        {
+            "src": "icons/Icon-192.png",
+            "sizes": "192x192",
+            "type": "image/png"
+        },
+        {
+            "src": "icons/Icon-512.png",
+            "sizes": "512x512",
+            "type": "image/png"
+        },
+        {
+            "src": "icons/Icon-maskable-192.png",
+            "sizes": "192x192",
+            "type": "image/png",
+            "purpose": "maskable"
+        },
+        {
+            "src": "icons/Icon-maskable-512.png",
+            "sizes": "512x512",
+            "type": "image/png",
+            "purpose": "maskable"
+        }
+    ]
 }

BIN
web/splash/img/dark-1x.png


BIN
web/splash/img/dark-2x.png


BIN
web/splash/img/dark-3x.png


BIN
web/splash/img/dark-4x.png


BIN
web/splash/img/light-1x.png


BIN
web/splash/img/light-2x.png


BIN
web/splash/img/light-3x.png


BIN
web/splash/img/light-4x.png


BIN
windows/runner/resources/app_icon.ico