From 876d355b180453b93b79b62bb0d3db1192ebac91 Mon Sep 17 00:00:00 2001 From: Zeus Date: Wed, 24 Jul 2024 11:12:17 +0800 Subject: [PATCH] update dio to dio: ^5.5.0+1 update dio to dio: ^5.5.0+1 --- .DS_Store | Bin 6148 -> 6148 bytes flutter/.DS_Store | Bin 8196 -> 8196 bytes flutter/ios/.DS_Store | Bin 8196 -> 8196 bytes flutter/ios/Runner.xcodeproj/project.pbxproj | 32 +++-- .../xcshareddata/WorkspaceSettings.xcsettings | 8 -- flutter/ios/Runner/Runner-Bridging-Header.h | 11 -- flutter/ios/Runner/TESWT.h | 16 +++ flutter/ios/Runner/TESWT.m | 12 ++ .../ios-arm64_x86_64-simulator/Headers/leaf.h | 119 ++++++++++++++++++ .../Headers/module.modulemap | 4 + .../ios-arm64_x86_64-simulator/libleaf.a | 3 + .../macos-arm64_x86_64/Headers/leaf.h | 119 ++++++++++++++++++ .../Headers/module.modulemap | 4 + .../macos-arm64_x86_64/libleaf.a | 3 + flutter/lib/channels/vpn_manager.dart | 4 +- flutter/lib/http/api/apis.dart | 2 +- flutter/lib/http/http.dart | 10 +- flutter/lib/http/http_exceptions.dart | 8 +- flutter/lib/main.dart | 18 +-- flutter/lib/model/themeCollection.dart | 2 +- flutter/lib/models/app_model.dart | 26 ++-- flutter/lib/models/base_model.dart | 4 +- flutter/lib/models/login_model.dart | 6 +- flutter/lib/models/plan_model.dart | 6 +- flutter/lib/models/server_model.dart | 12 +- flutter/lib/models/user_model.dart | 12 +- flutter/lib/models/user_subscribe_model.dart | 10 +- flutter/lib/pages/404/not_find_page.dart | 5 +- flutter/lib/pages/ProOnecePage.dart | 6 +- flutter/lib/pages/accountPage.dart | 20 +-- flutter/lib/pages/crisp_page.dart | 2 +- flutter/lib/pages/home/home_page.dart | 50 ++++---- flutter/lib/pages/login/login_page.dart | 16 +-- flutter/lib/pages/my_profile.dart | 12 +- flutter/lib/pages/plan/plan_page.dart | 2 +- flutter/lib/pages/proPage.dart | 6 +- flutter/lib/pages/server_list.dart | 12 +- flutter/lib/pages/webview_widget.dart | 5 +- flutter/lib/resources/app_theme.dart | 4 +- flutter/lib/router/application.dart | 2 +- flutter/lib/router/router_handlers.dart | 14 +-- flutter/lib/router/routers.dart | 2 +- flutter/lib/routes/OnceNotice.dart | 2 +- flutter/lib/routes/settingsRoute.dart | 8 +- flutter/lib/service/plan_service.dart | 9 +- flutter/lib/service/server_service.dart | 6 +- flutter/lib/service/user_service.dart | 10 +- flutter/lib/utils/http_util.dart | 18 +-- flutter/lib/utils/navigator_util.dart | 12 +- flutter/lib/utils/typedef/functions.dart | 8 +- flutter/lib/widgets/ProgressView.dart | 2 +- flutter/lib/widgets/connection_stats.dart | 16 +-- flutter/lib/widgets/home_widget.dart | 36 +++--- flutter/lib/widgets/logo_bar.dart | 14 +-- flutter/lib/widgets/my_subscribe.dart | 20 +-- flutter/lib/widgets/plan_list.dart | 12 +- flutter/lib/widgets/power_btn.dart | 20 +-- .../recent_connection_bottom_sheet.dart | 35 ++++-- flutter/lib/widgets/sail_app_bar.dart | 15 +-- flutter/lib/widgets/select_location.dart | 12 +- flutter/lib/widgets/sliding_cards.dart | 10 +- flutter/pubspec.lock | 12 +- flutter/pubspec.yaml | 7 +- flutter/test/widget_test.dart | 2 +- 64 files changed, 596 insertions(+), 299 deletions(-) delete mode 100644 flutter/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 flutter/ios/Runner/TESWT.h create mode 100644 flutter/ios/Runner/TESWT.m create mode 100644 flutter/ios/leaf.xcframework/ios-arm64_x86_64-simulator/Headers/leaf.h create mode 100644 flutter/ios/leaf.xcframework/ios-arm64_x86_64-simulator/Headers/module.modulemap create mode 100644 flutter/ios/leaf.xcframework/ios-arm64_x86_64-simulator/libleaf.a create mode 100644 flutter/ios/leaf.xcframework/macos-arm64_x86_64/Headers/leaf.h create mode 100644 flutter/ios/leaf.xcframework/macos-arm64_x86_64/Headers/module.modulemap create mode 100644 flutter/ios/leaf.xcframework/macos-arm64_x86_64/libleaf.a diff --git a/.DS_Store b/.DS_Store index 85e81193357084ef542eb968e84864c4a093b1d0..da271b7cfc3a9e8f9fca586845fddcf2dce82fa0 100644 GIT binary patch delta 69 zcmZoMXffCj&ce83as*4ExnIqT7}n}2 zR2!Nb8S5yRT3Ajl6goWlkC5c#X#x%GMg|5t3KnLQWd$8TVmxKRMR_^-dFepo7$+MF z8%~}jEY8Ms70A__d`3iK@(vO6$qNNa*?{KgD40){5pg>hp5 delta 282 zcmZp1XmOa}&nUVvU^hRb=w=>)d5nCFx(o~qlmCMOkg-rmW%3=t26iJ0LmdTU)5(FN zvXdKxwoJAW(bMH&2w=!(NMT50$YjW2NM+CilKBkD4B4JJ`N>H+`AI;N1Q-|?Wr4Kb zkFUG+*v0>k4c8PB+lh+HRa7$KKqg#Pp&u##w CqEM&+ diff --git a/flutter/ios/Runner.xcodeproj/project.pbxproj b/flutter/ios/Runner.xcodeproj/project.pbxproj index d403fb0..6eb3200 100644 --- a/flutter/ios/Runner.xcodeproj/project.pbxproj +++ b/flutter/ios/Runner.xcodeproj/project.pbxproj @@ -9,7 +9,7 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 2FD21F1125A363E300F556E0 /* PacketTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FD21F1025A363E300F556E0 /* PacketTunnelProvider.swift */; }; - 2FD21F1625A363E300F556E0 /* PacketTunnel.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 2FD21F0D25A363E300F556E0 /* PacketTunnel.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 2FD21F1625A363E300F556E0 /* PacketTunnel.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 2FD21F0D25A363E300F556E0 /* PacketTunnel.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 2FD21F2425A364B700F556E0 /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FD21EF825A363AA00F556E0 /* NetworkExtension.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3E06F985293FACBB00E04D92 /* PacketTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FD21F1025A363E300F556E0 /* PacketTunnelProvider.swift */; }; @@ -34,8 +34,10 @@ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; C09C70752C3E5685000F6E01 /* leaf.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0CB10F52C3275EE00A1F217 /* leaf.xcframework */; }; C09C70762C3E5685000F6E01 /* leaf.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C0CB10F52C3275EE00A1F217 /* leaf.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + C09CB0812C50A09A0028C461 /* TESWT.m in Sources */ = {isa = PBXBuildFile; fileRef = C09CB0802C50A09A0028C461 /* TESWT.m */; }; C0CB10F62C3275EE00A1F217 /* leaf.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0CB10F52C3275EE00A1F217 /* leaf.xcframework */; }; DBC6F25A26C78B1D91884CE1 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A9C0075B77637136AF52D8B /* Pods_Runner.framework */; }; + E2B5FEC68AAAE043A3080A59 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A9C0075B77637136AF52D8B /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -49,15 +51,15 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 2FD21F0625A363AA00F556E0 /* Embed App Extensions */ = { + 2FD21F0625A363AA00F556E0 /* Embed Foundation Extensions */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 12; dstPath = ""; dstSubfolderSpec = 13; files = ( - 2FD21F1625A363E300F556E0 /* PacketTunnel.appex in Embed App Extensions */, + 2FD21F1625A363E300F556E0 /* PacketTunnel.appex in Embed Foundation Extensions */, ); - name = "Embed App Extensions"; + name = "Embed Foundation Extensions"; runOnlyForDeploymentPostprocessing = 0; }; 9705A1C41CF9048500538489 /* Embed Frameworks */ = { @@ -122,7 +124,9 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C00A39D82C3E5F9D004E31E4 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + C09CB07F2C50A09A0028C461 /* TESWT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TESWT.h; sourceTree = ""; }; + C09CB0802C50A09A0028C461 /* TESWT.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TESWT.m; sourceTree = ""; }; + C09CB0832C50A0DD0028C461 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; C0CB10F52C3275EE00A1F217 /* leaf.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = leaf.xcframework; sourceTree = ""; }; /* End PBXFileReference section */ @@ -143,6 +147,7 @@ C0CB10F62C3275EE00A1F217 /* leaf.xcframework in Frameworks */, 2FD21F2425A364B700F556E0 /* NetworkExtension.framework in Frameworks */, DBC6F25A26C78B1D91884CE1 /* Pods_Runner.framework in Frameworks */, + E2B5FEC68AAAE043A3080A59 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -235,7 +240,9 @@ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, - C00A39D82C3E5F9D004E31E4 /* Runner-Bridging-Header.h */, + C09CB0832C50A0DD0028C461 /* Runner-Bridging-Header.h */, + C09CB07F2C50A09A0028C461 /* TESWT.h */, + C09CB0802C50A09A0028C461 /* TESWT.m */, ); path = Runner; sourceTree = ""; @@ -277,7 +284,7 @@ buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( 4A4528B4E4B302F57B5EDB65 /* [CP] Check Pods Manifest.lock */, - 2FD21F0625A363AA00F556E0 /* Embed App Extensions */, + 2FD21F0625A363AA00F556E0 /* Embed Foundation Extensions */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, @@ -302,6 +309,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { + BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 1230; LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; @@ -454,6 +462,7 @@ 3EA6B280293F6AB900B2BABC /* URL+Helpers.swift in Sources */, 3EA6B27F293F6AB500B2BABC /* FileManager+Helpers.swift in Sources */, 3EA6B27C293F68B500B2BABC /* VPNManager.swift in Sources */, + C09CB0812C50A09A0028C461 /* TESWT.m in Sources */, 3E06F989293FAFC600E04D92 /* LeafAdapter.swift in Sources */, 3E06F985293FACBB00E04D92 /* PacketTunnelProvider.swift in Sources */, 3E06F98C293FB8F600E04D92 /* TunnelConfiguration.swift in Sources */, @@ -514,6 +523,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -525,6 +535,7 @@ ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -582,7 +593,6 @@ SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_INCLUDE_PATHS = ""; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 1; VERSIONING_SYSTEM = "apple-generic"; @@ -735,6 +745,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -746,6 +757,7 @@ ENABLE_BITCODE = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -793,6 +805,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -804,6 +817,7 @@ ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -863,7 +877,6 @@ SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_INCLUDE_PATHS = ""; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 1; @@ -909,7 +922,6 @@ SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_INCLUDE_PATHS = ""; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 1; VERSIONING_SYSTEM = "apple-generic"; diff --git a/flutter/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/flutter/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c..0000000 --- a/flutter/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/flutter/ios/Runner/Runner-Bridging-Header.h b/flutter/ios/Runner/Runner-Bridging-Header.h index 2a22d07..308a2a5 100644 --- a/flutter/ios/Runner/Runner-Bridging-Header.h +++ b/flutter/ios/Runner/Runner-Bridging-Header.h @@ -1,12 +1 @@ -// -// Runner-Bridging-Header.h -// Runner -// -// Created by Zeus on 2024/7/10. -// - -#ifndef Runner_Bridging_Header_h -#define Runner_Bridging_Header_h - #import "GeneratedPluginRegistrant.h" -#endif /* Runner_Bridging_Header_h */ diff --git a/flutter/ios/Runner/TESWT.h b/flutter/ios/Runner/TESWT.h new file mode 100644 index 0000000..cfff131 --- /dev/null +++ b/flutter/ios/Runner/TESWT.h @@ -0,0 +1,16 @@ +// +// TESWT.h +// Runner +// +// Created by Zeus on 2024/7/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface TESWT : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/flutter/ios/Runner/TESWT.m b/flutter/ios/Runner/TESWT.m new file mode 100644 index 0000000..d53a706 --- /dev/null +++ b/flutter/ios/Runner/TESWT.m @@ -0,0 +1,12 @@ +// +// TESWT.m +// Runner +// +// Created by Zeus on 2024/7/24. +// + +#import "TESWT.h" + +@implementation TESWT + +@end diff --git a/flutter/ios/leaf.xcframework/ios-arm64_x86_64-simulator/Headers/leaf.h b/flutter/ios/leaf.xcframework/ios-arm64_x86_64-simulator/Headers/leaf.h new file mode 100644 index 0000000..4fb7b00 --- /dev/null +++ b/flutter/ios/leaf.xcframework/ios-arm64_x86_64-simulator/Headers/leaf.h @@ -0,0 +1,119 @@ +#include +#include +#include +#include + +/** + * No error. + */ +#define ERR_OK 0 + +/** + * Config path error. + */ +#define ERR_CONFIG_PATH 1 + +/** + * Config parsing error. + */ +#define ERR_CONFIG 2 + +/** + * IO error. + */ +#define ERR_IO 3 + +/** + * Config file watcher error. + */ +#define ERR_WATCHER 4 + +/** + * Async channel send error. + */ +#define ERR_ASYNC_CHANNEL_SEND 5 + +/** + * Sync channel receive error. + */ +#define ERR_SYNC_CHANNEL_RECV 6 + +/** + * Runtime manager error. + */ +#define ERR_RUNTIME_MANAGER 7 + +/** + * No associated config file. + */ +#define ERR_NO_CONFIG_FILE 8 + +/** + * Starts leaf with options, on a successful start this function blocks the current + * thread. + * + * @note This is not a stable API, parameters will change from time to time. + * + * @param rt_id A unique ID to associate this leaf instance, this is required when + * calling subsequent FFI functions, e.g. reload, shutdown. + * @param config_path The path of the config file, must be a file with suffix .conf + * or .json, according to the enabled features. + * @param auto_reload Enabls auto reloading when config file changes are detected, + * takes effect only when the "auto-reload" feature is enabled. + * @param multi_thread Whether to use a multi-threaded runtime. + * @param auto_threads Sets the number of runtime worker threads automatically, + * takes effect only when multi_thread is true. + * @param threads Sets the number of runtime worker threads, takes effect when + * multi_thread is true, but can be overridden by auto_threads. + * @param stack_size Sets stack size of the runtime worker threads, takes effect when + * multi_thread is true. + * @return ERR_OK on finish running, any other errors means a startup failure. + */ +int32_t leaf_run_with_options(uint16_t rt_id, + const char *config_path, + bool auto_reload, + bool multi_thread, + bool auto_threads, + int32_t threads, + int32_t stack_size); + +/** + * Starts leaf with a single-threaded runtime, on a successful start this function + * blocks the current thread. + * + * @param rt_id A unique ID to associate this leaf instance, this is required when + * calling subsequent FFI functions, e.g. reload, shutdown. + * @param config_path The path of the config file, must be a file with suffix .conf + * or .json, according to the enabled features. + * @return ERR_OK on finish running, any other errors means a startup failure. + */ +int32_t leaf_run(uint16_t rt_id, const char *config_path); + +int32_t leaf_run_with_config_string(uint16_t rt_id, const char *config); + +/** + * Reloads DNS servers, outbounds and routing rules from the config file. + * + * @param rt_id The ID of the leaf instance to reload. + * + * @return Returns ERR_OK on success. + */ +int32_t leaf_reload(uint16_t rt_id); + +/** + * Shuts down leaf. + * + * @param rt_id The ID of the leaf instance to reload. + * + * @return Returns true on success, false otherwise. + */ +bool leaf_shutdown(uint16_t rt_id); + +/** + * Tests the configuration. + * + * @param config_path The path of the config file, must be a file with suffix .conf + * or .json, according to the enabled features. + * @return Returns ERR_OK on success, i.e no syntax error. + */ +int32_t leaf_test_config(const char *config_path); diff --git a/flutter/ios/leaf.xcframework/ios-arm64_x86_64-simulator/Headers/module.modulemap b/flutter/ios/leaf.xcframework/ios-arm64_x86_64-simulator/Headers/module.modulemap new file mode 100644 index 0000000..138d37a --- /dev/null +++ b/flutter/ios/leaf.xcframework/ios-arm64_x86_64-simulator/Headers/module.modulemap @@ -0,0 +1,4 @@ +module leaf { + header "leaf.h" + export * +} diff --git a/flutter/ios/leaf.xcframework/ios-arm64_x86_64-simulator/libleaf.a b/flutter/ios/leaf.xcframework/ios-arm64_x86_64-simulator/libleaf.a new file mode 100644 index 0000000..334f7d9 --- /dev/null +++ b/flutter/ios/leaf.xcframework/ios-arm64_x86_64-simulator/libleaf.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b096d095e15e182038fc425ded251522c6a8baa2eb2668d4636df54f5c9915e1 +size 244040104 diff --git a/flutter/ios/leaf.xcframework/macos-arm64_x86_64/Headers/leaf.h b/flutter/ios/leaf.xcframework/macos-arm64_x86_64/Headers/leaf.h new file mode 100644 index 0000000..4fb7b00 --- /dev/null +++ b/flutter/ios/leaf.xcframework/macos-arm64_x86_64/Headers/leaf.h @@ -0,0 +1,119 @@ +#include +#include +#include +#include + +/** + * No error. + */ +#define ERR_OK 0 + +/** + * Config path error. + */ +#define ERR_CONFIG_PATH 1 + +/** + * Config parsing error. + */ +#define ERR_CONFIG 2 + +/** + * IO error. + */ +#define ERR_IO 3 + +/** + * Config file watcher error. + */ +#define ERR_WATCHER 4 + +/** + * Async channel send error. + */ +#define ERR_ASYNC_CHANNEL_SEND 5 + +/** + * Sync channel receive error. + */ +#define ERR_SYNC_CHANNEL_RECV 6 + +/** + * Runtime manager error. + */ +#define ERR_RUNTIME_MANAGER 7 + +/** + * No associated config file. + */ +#define ERR_NO_CONFIG_FILE 8 + +/** + * Starts leaf with options, on a successful start this function blocks the current + * thread. + * + * @note This is not a stable API, parameters will change from time to time. + * + * @param rt_id A unique ID to associate this leaf instance, this is required when + * calling subsequent FFI functions, e.g. reload, shutdown. + * @param config_path The path of the config file, must be a file with suffix .conf + * or .json, according to the enabled features. + * @param auto_reload Enabls auto reloading when config file changes are detected, + * takes effect only when the "auto-reload" feature is enabled. + * @param multi_thread Whether to use a multi-threaded runtime. + * @param auto_threads Sets the number of runtime worker threads automatically, + * takes effect only when multi_thread is true. + * @param threads Sets the number of runtime worker threads, takes effect when + * multi_thread is true, but can be overridden by auto_threads. + * @param stack_size Sets stack size of the runtime worker threads, takes effect when + * multi_thread is true. + * @return ERR_OK on finish running, any other errors means a startup failure. + */ +int32_t leaf_run_with_options(uint16_t rt_id, + const char *config_path, + bool auto_reload, + bool multi_thread, + bool auto_threads, + int32_t threads, + int32_t stack_size); + +/** + * Starts leaf with a single-threaded runtime, on a successful start this function + * blocks the current thread. + * + * @param rt_id A unique ID to associate this leaf instance, this is required when + * calling subsequent FFI functions, e.g. reload, shutdown. + * @param config_path The path of the config file, must be a file with suffix .conf + * or .json, according to the enabled features. + * @return ERR_OK on finish running, any other errors means a startup failure. + */ +int32_t leaf_run(uint16_t rt_id, const char *config_path); + +int32_t leaf_run_with_config_string(uint16_t rt_id, const char *config); + +/** + * Reloads DNS servers, outbounds and routing rules from the config file. + * + * @param rt_id The ID of the leaf instance to reload. + * + * @return Returns ERR_OK on success. + */ +int32_t leaf_reload(uint16_t rt_id); + +/** + * Shuts down leaf. + * + * @param rt_id The ID of the leaf instance to reload. + * + * @return Returns true on success, false otherwise. + */ +bool leaf_shutdown(uint16_t rt_id); + +/** + * Tests the configuration. + * + * @param config_path The path of the config file, must be a file with suffix .conf + * or .json, according to the enabled features. + * @return Returns ERR_OK on success, i.e no syntax error. + */ +int32_t leaf_test_config(const char *config_path); diff --git a/flutter/ios/leaf.xcframework/macos-arm64_x86_64/Headers/module.modulemap b/flutter/ios/leaf.xcframework/macos-arm64_x86_64/Headers/module.modulemap new file mode 100644 index 0000000..138d37a --- /dev/null +++ b/flutter/ios/leaf.xcframework/macos-arm64_x86_64/Headers/module.modulemap @@ -0,0 +1,4 @@ +module leaf { + header "leaf.h" + export * +} diff --git a/flutter/ios/leaf.xcframework/macos-arm64_x86_64/libleaf.a b/flutter/ios/leaf.xcframework/macos-arm64_x86_64/libleaf.a new file mode 100644 index 0000000..ee98a15 --- /dev/null +++ b/flutter/ios/leaf.xcframework/macos-arm64_x86_64/libleaf.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac6fe5534179bc17f4c486b3964a06e99e6a4902247694137ff1ea534472ac36 +size 246092480 diff --git a/flutter/lib/channels/vpn_manager.dart b/flutter/lib/channels/vpn_manager.dart index 8591939..d93af77 100644 --- a/flutter/lib/channels/vpn_manager.dart +++ b/flutter/lib/channels/vpn_manager.dart @@ -1,6 +1,6 @@ import 'package:flutter/services.dart'; -import 'package:sail/channels/Platform.dart'; -import 'package:sail/utils/common_util.dart'; +import 'package:uuvpn/channels/Platform.dart'; +import 'package:uuvpn/utils/common_util.dart'; enum VpnStatus { connected(code: 2), diff --git a/flutter/lib/http/api/apis.dart b/flutter/lib/http/api/apis.dart index 60dacc7..58937cf 100644 --- a/flutter/lib/http/api/apis.dart +++ b/flutter/lib/http/api/apis.dart @@ -1,5 +1,5 @@ /*后台接口api*/ -import 'package:sail/common/public.dart'; +import 'package:uuvpn/common/public.dart'; class Apis { static String appid = "IPOSih2134KHJKLDIO"; diff --git a/flutter/lib/http/http.dart b/flutter/lib/http/http.dart index ecddf3d..2cef625 100644 --- a/flutter/lib/http/http.dart +++ b/flutter/lib/http/http.dart @@ -1,6 +1,6 @@ import 'dart:async'; import 'package:dio/dio.dart'; -import 'package:sail/common/public.dart'; +import 'package:uuvpn/common/public.dart'; import 'error_interceptor.dart'; class Http { @@ -19,9 +19,9 @@ class Http { if (dio == null) { // BaseOptions、Options、RequestOptions 都可以配置参数,优先级别依次递增,且可以根据优先级别覆盖参数 BaseOptions options = new BaseOptions( - connectTimeout: CONNECT_TIMEOUT, + connectTimeout: Duration(seconds: CONNECT_TIMEOUT), // 响应流上前后两次接受到数据的间隔,单位为毫秒。 - receiveTimeout: RECEIVE_TIMEOUT, + receiveTimeout: Duration(seconds: RECEIVE_TIMEOUT), headers: {}, ); if (options.contentType != null && @@ -64,8 +64,8 @@ class Http { List? interceptors}) { dio!.options = dio!.options.copyWith( baseUrl: baseUrl, - connectTimeout: connectTimeout, - receiveTimeout: receiveTimeout, + connectTimeout: Duration(seconds: connectTimeout ?? 0), + receiveTimeout: Duration(seconds: receiveTimeout ?? 0), ); if (interceptors != null && interceptors.isNotEmpty) { dio!.interceptors.addAll(interceptors); diff --git a/flutter/lib/http/http_exceptions.dart b/flutter/lib/http/http_exceptions.dart index 0de8415..7178760 100644 --- a/flutter/lib/http/http_exceptions.dart +++ b/flutter/lib/http/http_exceptions.dart @@ -14,9 +14,9 @@ class DioHttpException implements Exception { return "$code$message"; } - factory DioHttpException.create(DioError error) { + factory DioHttpException.create(DioException error) { switch (error.type) { - case DioErrorType.other: + case DioExceptionType.unknown: { // 网络异常 return BadRequestException(-2, "无网络"); @@ -27,7 +27,7 @@ class DioHttpException implements Exception { return BadRequestException(-1, "请求取消"); } - case DioErrorType.connectTimeout: + case DioErrorType.connectionTimeout: { return BadRequestException(-1, "连接超时"); } @@ -42,7 +42,7 @@ class DioHttpException implements Exception { return BadRequestException(-1, "响应超时"); } - case DioErrorType.response: + case DioErrorType.badResponse: { try { int? errCode = error.response!.statusCode; diff --git a/flutter/lib/main.dart b/flutter/lib/main.dart index c42f6be..765ecb1 100644 --- a/flutter/lib/main.dart +++ b/flutter/lib/main.dart @@ -3,16 +3,16 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart' as services; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/constant/app_strings.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/constant/app_strings.dart'; import 'package:provider/provider.dart'; -import 'package:sail/models/app_model.dart'; -import 'package:sail/models/plan_model.dart'; -import 'package:sail/models/server_model.dart'; -import 'package:sail/models/user_subscribe_model.dart'; -import 'package:sail/router/application.dart'; -import 'package:sail/router/routers.dart'; -import 'package:sail/models/user_model.dart'; +import 'package:uuvpn/models/app_model.dart'; +import 'package:uuvpn/models/plan_model.dart'; +import 'package:uuvpn/models/server_model.dart'; +import 'package:uuvpn/models/user_subscribe_model.dart'; +import 'package:uuvpn/router/application.dart'; +import 'package:uuvpn/router/routers.dart'; +import 'package:uuvpn/models/user_model.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'model/UserPreference.dart'; diff --git a/flutter/lib/model/themeCollection.dart b/flutter/lib/model/themeCollection.dart index f208275..fc85956 100644 --- a/flutter/lib/model/themeCollection.dart +++ b/flutter/lib/model/themeCollection.dart @@ -1,6 +1,6 @@ // ignore_for_file: file_names import 'package:flutter/material.dart'; -import 'package:sail/resources/app_theme.dart'; +import 'package:uuvpn/resources/app_theme.dart'; class ThemeCollection extends ChangeNotifier { /// _colorSwatch method or function take RGB color as argument and after processing diff --git a/flutter/lib/models/app_model.dart b/flutter/lib/models/app_model.dart index ccae491..85183e3 100644 --- a/flutter/lib/models/app_model.dart +++ b/flutter/lib/models/app_model.dart @@ -1,14 +1,14 @@ import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; -import 'package:sail/adapters/leaf_ffi/config.dart'; -import 'package:sail/channels/Platform.dart'; -import 'package:sail/channels/vpn_manager.dart'; -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/constant/app_strings.dart'; -import 'package:sail/models/base_model.dart'; -import 'package:sail/models/server_model.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/utils/common_util.dart'; +import 'package:uuvpn/adapters/leaf_ffi/config.dart'; +import 'package:uuvpn/channels/Platform.dart'; +import 'package:uuvpn/channels/vpn_manager.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/constant/app_strings.dart'; +import 'package:uuvpn/models/base_model.dart'; +import 'package:uuvpn/models/server_model.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/utils/common_util.dart'; class AppModel extends BaseModel { VpnManager vpnManager = VpnManager(); @@ -174,17 +174,17 @@ class AppModel extends BaseModel { void setConfigRule(String tag) async { var proxy = config.proxies?.where((proxies) => proxies.tag == tag); - + if (proxy == null || proxy.isEmpty) { return; } - + config.rules?.last.target = tag; - + print("-----------------config-----------------"); print(config); print("-----------------config-----------------"); - + vpnManager.setTunnelConfiguration(config.toString()); } } diff --git a/flutter/lib/models/base_model.dart b/flutter/lib/models/base_model.dart index 9b1c19b..d0b7f54 100644 --- a/flutter/lib/models/base_model.dart +++ b/flutter/lib/models/base_model.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:sail/models/page_state.dart'; -import 'package:sail/utils/common_util.dart'; +import 'package:uuvpn/models/page_state.dart'; +import 'package:uuvpn/utils/common_util.dart'; class BaseModel extends ChangeNotifier { PageState pageState = PageState.loading; diff --git a/flutter/lib/models/login_model.dart b/flutter/lib/models/login_model.dart index d82da26..d704e7c 100644 --- a/flutter/lib/models/login_model.dart +++ b/flutter/lib/models/login_model.dart @@ -1,6 +1,6 @@ -import 'package:sail/models/base_model.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/service/user_service.dart'; +import 'package:uuvpn/models/base_model.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/service/user_service.dart'; class LoginModel extends BaseModel { final UserService _userService = UserService(); diff --git a/flutter/lib/models/plan_model.dart b/flutter/lib/models/plan_model.dart index 46daeb2..efc3255 100644 --- a/flutter/lib/models/plan_model.dart +++ b/flutter/lib/models/plan_model.dart @@ -1,6 +1,6 @@ -import 'package:sail/entity/plan_entity.dart'; -import 'package:sail/models/base_model.dart'; -import 'package:sail/service/plan_service.dart'; +import 'package:uuvpn/entity/plan_entity.dart'; +import 'package:uuvpn/models/base_model.dart'; +import 'package:uuvpn/service/plan_service.dart'; class PlanModel extends BaseModel { final PlanService _planService = PlanService(); diff --git a/flutter/lib/models/server_model.dart b/flutter/lib/models/server_model.dart index c9d5c81..1953ffd 100644 --- a/flutter/lib/models/server_model.dart +++ b/flutter/lib/models/server_model.dart @@ -2,12 +2,12 @@ import 'dart:convert'; import 'dart:io'; import 'package:flutter_icmp_ping/flutter_icmp_ping.dart'; -import 'package:sail/constant/app_strings.dart'; -import 'package:sail/entity/server_entity.dart'; -import 'package:sail/models/base_model.dart'; -import 'package:sail/service/server_service.dart'; -import 'package:sail/utils/shared_preferences_util.dart'; -import 'package:sail/utils/common_util.dart'; +import 'package:uuvpn/constant/app_strings.dart'; +import 'package:uuvpn/entity/server_entity.dart'; +import 'package:uuvpn/models/base_model.dart'; +import 'package:uuvpn/service/server_service.dart'; +import 'package:uuvpn/utils/shared_preferences_util.dart'; +import 'package:uuvpn/utils/common_util.dart'; enum PingType { ping, tcp } diff --git a/flutter/lib/models/user_model.dart b/flutter/lib/models/user_model.dart index e432293..39fa012 100644 --- a/flutter/lib/models/user_model.dart +++ b/flutter/lib/models/user_model.dart @@ -1,9 +1,9 @@ -import 'package:sail/constant/app_strings.dart'; -import 'package:sail/entity/login_entity.dart'; -import 'package:sail/entity/user_entity.dart'; -import 'package:sail/models/base_model.dart'; -import 'package:sail/utils/navigator_util.dart'; -import 'package:sail/utils/shared_preferences_util.dart'; +import 'package:uuvpn/constant/app_strings.dart'; +import 'package:uuvpn/entity/login_entity.dart'; +import 'package:uuvpn/entity/user_entity.dart'; +import 'package:uuvpn/models/base_model.dart'; +import 'package:uuvpn/utils/navigator_util.dart'; +import 'package:uuvpn/utils/shared_preferences_util.dart'; import 'package:shared_preferences/shared_preferences.dart'; class UserModel extends BaseModel { diff --git a/flutter/lib/models/user_subscribe_model.dart b/flutter/lib/models/user_subscribe_model.dart index ea26ab0..2f41a0d 100644 --- a/flutter/lib/models/user_subscribe_model.dart +++ b/flutter/lib/models/user_subscribe_model.dart @@ -1,8 +1,8 @@ -import 'package:sail/constant/app_strings.dart'; -import 'package:sail/entity/user_subscribe_entity.dart'; -import 'package:sail/models/base_model.dart'; -import 'package:sail/service/user_service.dart'; -import 'package:sail/utils/shared_preferences_util.dart'; +import 'package:uuvpn/constant/app_strings.dart'; +import 'package:uuvpn/entity/user_subscribe_entity.dart'; +import 'package:uuvpn/models/base_model.dart'; +import 'package:uuvpn/service/user_service.dart'; +import 'package:uuvpn/utils/shared_preferences_util.dart'; class UserSubscribeModel extends BaseModel { UserSubscribeEntity? _userSubscribeEntity; diff --git a/flutter/lib/pages/404/not_find_page.dart b/flutter/lib/pages/404/not_find_page.dart index 797ec49..f9b6b16 100644 --- a/flutter/lib/pages/404/not_find_page.dart +++ b/flutter/lib/pages/404/not_find_page.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:sail/constant/app_images.dart'; -import 'package:sail/constant/app_strings.dart'; - +import 'package:uuvpn/constant/app_images.dart'; +import 'package:uuvpn/constant/app_strings.dart'; class NotFindPage extends StatelessWidget { const NotFindPage({Key? key}) : super(key: key); diff --git a/flutter/lib/pages/ProOnecePage.dart b/flutter/lib/pages/ProOnecePage.dart index c25cf3a..bd2075f 100644 --- a/flutter/lib/pages/ProOnecePage.dart +++ b/flutter/lib/pages/ProOnecePage.dart @@ -1,8 +1,8 @@ //ProOnecePage.dart //ignore_for_file: file_names -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/router/application.dart'; -import 'package:sail/utils/l10n.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/router/application.dart'; +import 'package:uuvpn/utils/l10n.dart'; import '/model/themeCollection.dart'; import 'package:flutter/material.dart'; diff --git a/flutter/lib/pages/accountPage.dart b/flutter/lib/pages/accountPage.dart index 17f59d9..8b972f4 100644 --- a/flutter/lib/pages/accountPage.dart +++ b/flutter/lib/pages/accountPage.dart @@ -1,16 +1,16 @@ //ignore_for_file: file_names import 'package:flutter/cupertino.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/models/app_model.dart'; -import 'package:sail/models/plan_model.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/models/user_subscribe_model.dart'; -import 'package:sail/utils/l10n.dart'; -import 'package:sail/utils/navigator_util.dart'; -import 'package:sail/widgets/logo_bar.dart'; -import 'package:sail/widgets/my_subscribe.dart'; -import 'package:sail/widgets/plan_list.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/models/app_model.dart'; +import 'package:uuvpn/models/plan_model.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/models/user_subscribe_model.dart'; +import 'package:uuvpn/utils/l10n.dart'; +import 'package:uuvpn/utils/navigator_util.dart'; +import 'package:uuvpn/widgets/logo_bar.dart'; +import 'package:uuvpn/widgets/my_subscribe.dart'; +import 'package:uuvpn/widgets/plan_list.dart'; import '/routes/proRoute.dart'; import '/routes/settingsRoute.dart'; diff --git a/flutter/lib/pages/crisp_page.dart b/flutter/lib/pages/crisp_page.dart index e119788..ee130f3 100644 --- a/flutter/lib/pages/crisp_page.dart +++ b/flutter/lib/pages/crisp_page.dart @@ -1,6 +1,6 @@ import 'package:crisp/crisp.dart'; import 'package:flutter/widgets.dart'; -import 'package:sail/constant/app_strings.dart'; +import 'package:uuvpn/constant/app_strings.dart'; class CrispPage extends StatefulWidget { const CrispPage({Key? key}) : super(key: key); diff --git a/flutter/lib/pages/home/home_page.dart b/flutter/lib/pages/home/home_page.dart index 43c7a5f..b82b282 100644 --- a/flutter/lib/pages/home/home_page.dart +++ b/flutter/lib/pages/home/home_page.dart @@ -5,31 +5,31 @@ import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/constant/app_dimens.dart'; -import 'package:sail/model/themeCollection.dart'; -import 'package:sail/models/app_model.dart'; -import 'package:sail/models/plan_model.dart'; -import 'package:sail/models/server_model.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/models/user_subscribe_model.dart'; -import 'package:sail/pages/accountPage.dart'; -import 'package:sail/pages/homePage.dart'; -import 'package:sail/pages/my_profile.dart'; -import 'package:sail/pages/plan/plan_page.dart'; -import 'package:sail/pages/proPage.dart'; -import 'package:sail/pages/server_list.dart'; -import 'package:sail/router/application.dart'; -import 'package:sail/routes/OnceNotice.dart'; -import 'package:sail/routes/proRoute.dart'; -import 'package:sail/utils/l10n.dart'; -import 'package:sail/utils/message_util.dart'; -import 'package:sail/utils/navigator_util.dart'; -import 'package:sail/widgets/ProgressView.dart'; -import 'package:sail/widgets/home_widget.dart'; -import 'package:sail/widgets/power_btn.dart'; -import 'package:sail/widgets/sail_app_bar.dart'; -import 'package:sail/utils/common_util.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/constant/app_dimens.dart'; +import 'package:uuvpn/model/themeCollection.dart'; +import 'package:uuvpn/models/app_model.dart'; +import 'package:uuvpn/models/plan_model.dart'; +import 'package:uuvpn/models/server_model.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/models/user_subscribe_model.dart'; +import 'package:uuvpn/pages/accountPage.dart'; +import 'package:uuvpn/pages/homePage.dart'; +import 'package:uuvpn/pages/my_profile.dart'; +import 'package:uuvpn/pages/plan/plan_page.dart'; +import 'package:uuvpn/pages/proPage.dart'; +import 'package:uuvpn/pages/server_list.dart'; +import 'package:uuvpn/router/application.dart'; +import 'package:uuvpn/routes/OnceNotice.dart'; +import 'package:uuvpn/routes/proRoute.dart'; +import 'package:uuvpn/utils/l10n.dart'; +import 'package:uuvpn/utils/message_util.dart'; +import 'package:uuvpn/utils/navigator_util.dart'; +import 'package:uuvpn/widgets/ProgressView.dart'; +import 'package:uuvpn/widgets/home_widget.dart'; +import 'package:uuvpn/widgets/power_btn.dart'; +import 'package:uuvpn/widgets/sail_app_bar.dart'; +import 'package:uuvpn/utils/common_util.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:url_launcher/url_launcher.dart'; diff --git a/flutter/lib/pages/login/login_page.dart b/flutter/lib/pages/login/login_page.dart index eaeb316..56ca179 100644 --- a/flutter/lib/pages/login/login_page.dart +++ b/flutter/lib/pages/login/login_page.dart @@ -2,14 +2,14 @@ import 'package:flutter/material.dart'; import 'package:flutter_login/flutter_login.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:provider/provider.dart'; -import 'package:sail/model/themeCollection.dart'; -import 'package:sail/models/login_model.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/router/application.dart'; -import 'package:sail/service/user_service.dart'; -import 'package:sail/utils/l10n.dart'; -import 'package:sail/utils/navigator_util.dart'; -import 'package:sail/constant/app_strings.dart'; +import 'package:uuvpn/model/themeCollection.dart'; +import 'package:uuvpn/models/login_model.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/router/application.dart'; +import 'package:uuvpn/service/user_service.dart'; +import 'package:uuvpn/utils/l10n.dart'; +import 'package:uuvpn/utils/navigator_util.dart'; +import 'package:uuvpn/constant/app_strings.dart'; class LoginPage extends StatefulWidget { const LoginPage({Key? key}) : super(key: key); diff --git a/flutter/lib/pages/my_profile.dart b/flutter/lib/pages/my_profile.dart index 41b626c..e8b918a 100644 --- a/flutter/lib/pages/my_profile.dart +++ b/flutter/lib/pages/my_profile.dart @@ -2,12 +2,12 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:provider/provider.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/service/user_service.dart'; -import 'package:sail/utils/l10n.dart'; -import 'package:sail/utils/navigator_util.dart'; -import 'package:sail/widgets/bottom_block.dart'; -import 'package:sail/widgets/profile_widget.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/service/user_service.dart'; +import 'package:uuvpn/utils/l10n.dart'; +import 'package:uuvpn/utils/navigator_util.dart'; +import 'package:uuvpn/widgets/bottom_block.dart'; +import 'package:uuvpn/widgets/profile_widget.dart'; class MyProfile extends StatefulWidget { const MyProfile({Key? key}) : super(key: key); diff --git a/flutter/lib/pages/plan/plan_page.dart b/flutter/lib/pages/plan/plan_page.dart index 1ebc914..893e70f 100644 --- a/flutter/lib/pages/plan/plan_page.dart +++ b/flutter/lib/pages/plan/plan_page.dart @@ -1,4 +1,4 @@ -import 'package:sail/widgets/sliding_cards.dart'; +import 'package:uuvpn/widgets/sliding_cards.dart'; import 'package:flutter/material.dart'; class PlanPage extends StatelessWidget { diff --git a/flutter/lib/pages/proPage.dart b/flutter/lib/pages/proPage.dart index d50cf25..6b4062b 100644 --- a/flutter/lib/pages/proPage.dart +++ b/flutter/lib/pages/proPage.dart @@ -1,8 +1,8 @@ //ignore_for_file: file_names import 'package:flutter_screenutil/flutter_screenutil.dart'; -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/router/application.dart'; -import 'package:sail/utils/l10n.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/router/application.dart'; +import 'package:uuvpn/utils/l10n.dart'; import '/model/themeCollection.dart'; import 'package:flutter/material.dart'; diff --git a/flutter/lib/pages/server_list.dart b/flutter/lib/pages/server_list.dart index 48c5f37..68618c6 100644 --- a/flutter/lib/pages/server_list.dart +++ b/flutter/lib/pages/server_list.dart @@ -2,13 +2,13 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:modal_bottom_sheet/modal_bottom_sheet.dart'; import 'package:provider/provider.dart'; -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/model/themeCollection.dart'; -import 'package:sail/models/app_model.dart'; -import 'package:sail/models/server_model.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/model/themeCollection.dart'; +import 'package:uuvpn/models/app_model.dart'; +import 'package:uuvpn/models/server_model.dart'; import 'package:flutter/material.dart'; -import 'package:sail/utils/common_util.dart'; -import 'package:sail/utils/l10n.dart'; +import 'package:uuvpn/utils/common_util.dart'; +import 'package:uuvpn/utils/l10n.dart'; class ServerListPage extends StatefulWidget { const ServerListPage({Key? key}) : super(key: key); diff --git a/flutter/lib/pages/webview_widget.dart b/flutter/lib/pages/webview_widget.dart index da19e6d..a5d257c 100644 --- a/flutter/lib/pages/webview_widget.dart +++ b/flutter/lib/pages/webview_widget.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:sail/constant/app_strings.dart'; +import 'package:uuvpn/constant/app_strings.dart'; import 'package:webview_flutter/webview_flutter.dart'; class WebViewWidget extends StatefulWidget { @@ -37,7 +37,8 @@ class WebViewWidgetState extends State { centerTitle: true, ), body: WebView( - initialUrl: widget.url?.isEmpty == true ? AppStrings.appName : widget.url, + initialUrl: + widget.url?.isEmpty == true ? AppStrings.appName : widget.url, javascriptMode: JavascriptMode.unrestricted, onWebViewCreated: (controller) => this.controller = controller, onPageFinished: (url) { diff --git a/flutter/lib/resources/app_theme.dart b/flutter/lib/resources/app_theme.dart index 562161c..4c2bf1e 100644 --- a/flutter/lib/resources/app_theme.dart +++ b/flutter/lib/resources/app_theme.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:sail/resources/app_colors.dart'; -import 'package:sail/resources/app_typography.dart'; +import 'package:uuvpn/resources/app_colors.dart'; +import 'package:uuvpn/resources/app_typography.dart'; ThemeData getApplicationTheme() { return ThemeData( diff --git a/flutter/lib/router/application.dart b/flutter/lib/router/application.dart index 0be6c6e..bd7467f 100644 --- a/flutter/lib/router/application.dart +++ b/flutter/lib/router/application.dart @@ -1,7 +1,7 @@ import 'package:fluro/fluro.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:sail/utils/l10n.dart'; +import 'package:uuvpn/utils/l10n.dart'; class Application { static FluroRouter? router; diff --git a/flutter/lib/router/router_handlers.dart b/flutter/lib/router/router_handlers.dart index 85812e2..9c1b1b3 100644 --- a/flutter/lib/router/router_handlers.dart +++ b/flutter/lib/router/router_handlers.dart @@ -1,12 +1,12 @@ import 'package:fluro/fluro.dart'; import 'package:flutter/material.dart'; -import 'package:sail/pages/accountPage.dart'; -import 'package:sail/pages/home/home_page.dart'; -import 'package:sail/pages/404/not_find_page.dart'; -import 'package:sail/pages/login/login_page.dart'; -import 'package:sail/pages/plan/plan_page.dart'; -import 'package:sail/pages/server_list.dart'; -import 'package:sail/pages/webview_widget.dart'; +import 'package:uuvpn/pages/accountPage.dart'; +import 'package:uuvpn/pages/home/home_page.dart'; +import 'package:uuvpn/pages/404/not_find_page.dart'; +import 'package:uuvpn/pages/login/login_page.dart'; +import 'package:uuvpn/pages/plan/plan_page.dart'; +import 'package:uuvpn/pages/server_list.dart'; +import 'package:uuvpn/pages/webview_widget.dart'; import 'dart:convert'; /// 入口 diff --git a/flutter/lib/router/routers.dart b/flutter/lib/router/routers.dart index 9f507cc..248f12b 100644 --- a/flutter/lib/router/routers.dart +++ b/flutter/lib/router/routers.dart @@ -1,5 +1,5 @@ import 'package:fluro/fluro.dart'; -import 'package:sail/router/router_handlers.dart'; +import 'package:uuvpn/router/router_handlers.dart'; class Routers { static String home = "/"; diff --git a/flutter/lib/routes/OnceNotice.dart b/flutter/lib/routes/OnceNotice.dart index 27386b0..f14775c 100644 --- a/flutter/lib/routes/OnceNotice.dart +++ b/flutter/lib/routes/OnceNotice.dart @@ -1,6 +1,6 @@ // OnceNotice.dart //ignore_for_file: file_names -import 'package:sail/pages/ProOnecePage.dart'; +import 'package:uuvpn/pages/ProOnecePage.dart'; import '/pages/proPage.dart'; import 'package:flutter/material.dart'; diff --git a/flutter/lib/routes/settingsRoute.dart b/flutter/lib/routes/settingsRoute.dart index a4adad6..f1d3d8f 100644 --- a/flutter/lib/routes/settingsRoute.dart +++ b/flutter/lib/routes/settingsRoute.dart @@ -1,8 +1,8 @@ //ignore_for_file: file_names -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/routes/proRoute.dart'; -import 'package:sail/utils/navigator_util.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/routes/proRoute.dart'; +import 'package:uuvpn/utils/navigator_util.dart'; import 'package:url_launcher/url_launcher.dart'; import '../model/themeCollection.dart'; diff --git a/flutter/lib/service/plan_service.dart b/flutter/lib/service/plan_service.dart index 2268e40..74f12ea 100644 --- a/flutter/lib/service/plan_service.dart +++ b/flutter/lib/service/plan_service.dart @@ -1,6 +1,6 @@ -import 'package:sail/constant/app_urls.dart'; -import 'package:sail/entity/plan_entity.dart'; -import 'package:sail/utils/http_util.dart'; +import 'package:uuvpn/constant/app_urls.dart'; +import 'package:uuvpn/entity/plan_entity.dart'; +import 'package:uuvpn/utils/http_util.dart'; class PlanService { Future>? plan() { @@ -10,7 +10,8 @@ class PlanService { } Future? planDetail(int id) { - return HttpUtil.instance?.get(AppUrls.plan, parameters: {'id': id}).then((result) { + return HttpUtil.instance + ?.get(AppUrls.plan, parameters: {'id': id}).then((result) { return PlanEntity.fromMap(result['data']); }); } diff --git a/flutter/lib/service/server_service.dart b/flutter/lib/service/server_service.dart index 096535d..f68fb45 100644 --- a/flutter/lib/service/server_service.dart +++ b/flutter/lib/service/server_service.dart @@ -1,6 +1,6 @@ -import 'package:sail/constant/app_urls.dart'; -import 'package:sail/entity/server_entity.dart'; -import 'package:sail/utils/http_util.dart'; +import 'package:uuvpn/constant/app_urls.dart'; +import 'package:uuvpn/entity/server_entity.dart'; +import 'package:uuvpn/utils/http_util.dart'; class ServerService { Future> server() { diff --git a/flutter/lib/service/user_service.dart b/flutter/lib/service/user_service.dart index 390b6f9..03704c1 100644 --- a/flutter/lib/service/user_service.dart +++ b/flutter/lib/service/user_service.dart @@ -1,8 +1,8 @@ -import 'package:sail/constant/app_urls.dart'; -import 'package:sail/entity/login_entity.dart'; -import 'package:sail/entity/user_entity.dart'; -import 'package:sail/entity/user_subscribe_entity.dart'; -import 'package:sail/utils/http_util.dart'; +import 'package:uuvpn/constant/app_urls.dart'; +import 'package:uuvpn/entity/login_entity.dart'; +import 'package:uuvpn/entity/user_entity.dart'; +import 'package:uuvpn/entity/user_subscribe_entity.dart'; +import 'package:uuvpn/utils/http_util.dart'; class UserService { Future? login(Map parameters) { diff --git a/flutter/lib/utils/http_util.dart b/flutter/lib/utils/http_util.dart index a280d3f..45ff886 100644 --- a/flutter/lib/utils/http_util.dart +++ b/flutter/lib/utils/http_util.dart @@ -1,9 +1,9 @@ import 'package:dio/dio.dart'; -import 'package:sail/constant/app_strings.dart'; -import 'package:sail/router/application.dart'; -import 'package:sail/router/routers.dart'; -import 'package:sail/utils/common_util.dart'; -import 'package:sail/utils/shared_preferences_util.dart'; +import 'package:uuvpn/constant/app_strings.dart'; +import 'package:uuvpn/router/application.dart'; +import 'package:uuvpn/router/routers.dart'; +import 'package:uuvpn/utils/common_util.dart'; +import 'package:uuvpn/utils/shared_preferences_util.dart'; class HttpUtil { static HttpUtil get instance => _httpUtil; @@ -12,8 +12,8 @@ class HttpUtil { HttpUtil() { BaseOptions options = BaseOptions( - connectTimeout: 10000, - receiveTimeout: 10000, + connectTimeout: Duration(seconds: 10000), + receiveTimeout: Duration(seconds: 10000), ); dio = Dio(options); dio.interceptors @@ -53,10 +53,10 @@ class HttpUtil { Application.navigatorKey.currentState?.pushNamed(Routers.login); } - return handler.reject(DioError( + return handler.reject(DioException( requestOptions: response.requestOptions, response: response, - type: DioErrorType.response)); + type: DioExceptionType.badResponse)); } return handler.next(response); diff --git a/flutter/lib/utils/navigator_util.dart b/flutter/lib/utils/navigator_util.dart index 2ac8a91..b0b69cc 100644 --- a/flutter/lib/utils/navigator_util.dart +++ b/flutter/lib/utils/navigator_util.dart @@ -4,12 +4,12 @@ import 'package:fluro/fluro.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:modal_bottom_sheet/modal_bottom_sheet.dart'; -import 'package:sail/pages/accountPage.dart'; -import 'package:sail/pages/crisp_page.dart'; -import 'package:sail/pages/plan/plan_page.dart'; -import 'package:sail/pages/server_list.dart'; -import 'package:sail/router/application.dart'; -import 'package:sail/router/routers.dart'; +import 'package:uuvpn/pages/accountPage.dart'; +import 'package:uuvpn/pages/crisp_page.dart'; +import 'package:uuvpn/pages/plan/plan_page.dart'; +import 'package:uuvpn/pages/server_list.dart'; +import 'package:uuvpn/router/application.dart'; +import 'package:uuvpn/router/routers.dart'; class NavigatorUtil { static goHomePage(BuildContext context) { diff --git a/flutter/lib/utils/typedef/functions.dart b/flutter/lib/utils/typedef/functions.dart index 7a822a5..32dd9ab 100644 --- a/flutter/lib/utils/typedef/functions.dart +++ b/flutter/lib/utils/typedef/functions.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; -// import 'package:sail/go_router.dart'; +// import 'package:uuvpn/go_router.dart'; import 'package:intl/intl.dart'; -import 'package:sail/resources/app_colors.dart'; -import 'package:sail/resources/app_routes.dart'; -import 'package:sail/resources/app_values.dart'; +import 'package:uuvpn/resources/app_colors.dart'; +import 'package:uuvpn/resources/app_routes.dart'; +import 'package:uuvpn/resources/app_values.dart'; String getDate(String? date) { if (date == null || date.isEmpty) { diff --git a/flutter/lib/widgets/ProgressView.dart b/flutter/lib/widgets/ProgressView.dart index e7e46b5..0836752 100644 --- a/flutter/lib/widgets/ProgressView.dart +++ b/flutter/lib/widgets/ProgressView.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:sail/constant/app_colors.dart'; +import 'package:uuvpn/constant/app_colors.dart'; class ProgressView extends StatelessWidget { const ProgressView({Key? key}) : super(key: key); diff --git a/flutter/lib/widgets/connection_stats.dart b/flutter/lib/widgets/connection_stats.dart index 76d6ff3..db0b624 100644 --- a/flutter/lib/widgets/connection_stats.dart +++ b/flutter/lib/widgets/connection_stats.dart @@ -1,14 +1,14 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:provider/provider.dart'; -import 'package:sail/channels/Platform.dart'; -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/model/themeCollection.dart'; -import 'package:sail/models/app_model.dart'; -import 'package:sail/models/server_model.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/utils/l10n.dart'; -import 'package:sail/utils/navigator_util.dart'; +import 'package:uuvpn/channels/Platform.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/model/themeCollection.dart'; +import 'package:uuvpn/models/app_model.dart'; +import 'package:uuvpn/models/server_model.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/utils/l10n.dart'; +import 'package:uuvpn/utils/navigator_util.dart'; class ConnectionStats extends StatefulWidget { const ConnectionStats({Key? key}) : super(key: key); diff --git a/flutter/lib/widgets/home_widget.dart b/flutter/lib/widgets/home_widget.dart index b9b8f33..aa9aebe 100644 --- a/flutter/lib/widgets/home_widget.dart +++ b/flutter/lib/widgets/home_widget.dart @@ -2,24 +2,24 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/model/themeCollection.dart'; -import 'package:sail/models/app_model.dart'; -import 'package:sail/models/plan_model.dart'; -import 'package:sail/models/server_model.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/models/user_subscribe_model.dart'; -import 'package:sail/resources/app_colors.dart'; -import 'package:sail/utils/l10n.dart'; -import 'package:sail/widgets/bottom_block.dart'; -import 'package:sail/widgets/connection_stats.dart'; -import 'package:sail/widgets/logo_bar.dart'; -import 'package:sail/widgets/my_subscribe.dart'; -import 'package:sail/widgets/plan_list.dart'; -import 'package:sail/widgets/power_btn.dart'; -import 'package:sail/widgets/select_location.dart'; -import 'package:sail/utils/common_util.dart'; -import 'package:sail/widgets/watermuticicel.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/model/themeCollection.dart'; +import 'package:uuvpn/models/app_model.dart'; +import 'package:uuvpn/models/plan_model.dart'; +import 'package:uuvpn/models/server_model.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/models/user_subscribe_model.dart'; +import 'package:uuvpn/resources/app_colors.dart'; +import 'package:uuvpn/utils/l10n.dart'; +import 'package:uuvpn/widgets/bottom_block.dart'; +import 'package:uuvpn/widgets/connection_stats.dart'; +import 'package:uuvpn/widgets/logo_bar.dart'; +import 'package:uuvpn/widgets/my_subscribe.dart'; +import 'package:uuvpn/widgets/plan_list.dart'; +import 'package:uuvpn/widgets/power_btn.dart'; +import 'package:uuvpn/widgets/select_location.dart'; +import 'package:uuvpn/utils/common_util.dart'; +import 'package:uuvpn/widgets/watermuticicel.dart'; class HomeWidget extends StatefulWidget { const HomeWidget({Key? key}) : super(key: key); diff --git a/flutter/lib/widgets/logo_bar.dart b/flutter/lib/widgets/logo_bar.dart index d8a3773..5683ac0 100644 --- a/flutter/lib/widgets/logo_bar.dart +++ b/flutter/lib/widgets/logo_bar.dart @@ -2,13 +2,13 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:provider/provider.dart'; -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/constant/app_strings.dart'; -import 'package:sail/models/app_model.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/models/user_subscribe_model.dart'; -import 'package:sail/utils/l10n.dart'; -import 'package:sail/utils/navigator_util.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/constant/app_strings.dart'; +import 'package:uuvpn/models/app_model.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/models/user_subscribe_model.dart'; +import 'package:uuvpn/utils/l10n.dart'; +import 'package:uuvpn/utils/navigator_util.dart'; class LogoBar extends StatelessWidget { const LogoBar({ diff --git a/flutter/lib/widgets/my_subscribe.dart b/flutter/lib/widgets/my_subscribe.dart index 557aea3..16dfc28 100644 --- a/flutter/lib/widgets/my_subscribe.dart +++ b/flutter/lib/widgets/my_subscribe.dart @@ -3,16 +3,16 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/entity/user_subscribe_entity.dart'; -import 'package:sail/model/themeCollection.dart'; -import 'package:sail/models/app_model.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/router/application.dart'; -import 'package:sail/routes/OnceNotice.dart'; -import 'package:sail/utils/l10n.dart'; -import 'package:sail/utils/navigator_util.dart'; -import 'package:sail/utils/transfer_util.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/entity/user_subscribe_entity.dart'; +import 'package:uuvpn/model/themeCollection.dart'; +import 'package:uuvpn/models/app_model.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/router/application.dart'; +import 'package:uuvpn/routes/OnceNotice.dart'; +import 'package:uuvpn/utils/l10n.dart'; +import 'package:uuvpn/utils/navigator_util.dart'; +import 'package:uuvpn/utils/transfer_util.dart'; class MySubscribe extends StatefulWidget { const MySubscribe( diff --git a/flutter/lib/widgets/plan_list.dart b/flutter/lib/widgets/plan_list.dart index febbc3d..869398b 100644 --- a/flutter/lib/widgets/plan_list.dart +++ b/flutter/lib/widgets/plan_list.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:provider/provider.dart'; -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/entity/plan_entity.dart'; -import 'package:sail/entity/user_subscribe_entity.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/utils/l10n.dart'; -import 'package:sail/utils/navigator_util.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/entity/plan_entity.dart'; +import 'package:uuvpn/entity/user_subscribe_entity.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/utils/l10n.dart'; +import 'package:uuvpn/utils/navigator_util.dart'; class PlanList extends StatefulWidget { const PlanList( diff --git a/flutter/lib/widgets/power_btn.dart b/flutter/lib/widgets/power_btn.dart index 6ca61de..7b2bb78 100644 --- a/flutter/lib/widgets/power_btn.dart +++ b/flutter/lib/widgets/power_btn.dart @@ -2,16 +2,16 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/model/themeCollection.dart'; -import 'package:sail/models/app_model.dart'; -import 'package:sail/models/server_model.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/utils/l10n.dart'; -import 'package:sail/utils/message_util.dart'; -import 'package:sail/utils/navigator_util.dart'; -import 'package:sail/widgets/watermuticicel.dart'; -import 'package:sail/widgets/waterrepper.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/model/themeCollection.dart'; +import 'package:uuvpn/models/app_model.dart'; +import 'package:uuvpn/models/server_model.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/utils/l10n.dart'; +import 'package:uuvpn/utils/message_util.dart'; +import 'package:uuvpn/utils/navigator_util.dart'; +import 'package:uuvpn/widgets/watermuticicel.dart'; +import 'package:uuvpn/widgets/waterrepper.dart'; class PowerButton extends StatefulWidget { const PowerButton({Key? key}) : super(key: key); diff --git a/flutter/lib/widgets/recent_connection_bottom_sheet.dart b/flutter/lib/widgets/recent_connection_bottom_sheet.dart index 8236b00..773f377 100644 --- a/flutter/lib/widgets/recent_connection_bottom_sheet.dart +++ b/flutter/lib/widgets/recent_connection_bottom_sheet.dart @@ -3,7 +3,7 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; -import 'package:sail/constant/app_colors.dart'; +import 'package:uuvpn/constant/app_colors.dart'; double minHeight = ScreenUtil().setHeight(260); const double iconStartSize = 44; @@ -17,15 +17,19 @@ class RecentConnectionBottomSheet extends StatefulWidget { const RecentConnectionBottomSheet({Key? key}) : super(key: key); @override - RecentConnectionBottomSheetState createState() => RecentConnectionBottomSheetState(); + RecentConnectionBottomSheetState createState() => + RecentConnectionBottomSheetState(); } -class RecentConnectionBottomSheetState extends State with SingleTickerProviderStateMixin { +class RecentConnectionBottomSheetState + extends State + with SingleTickerProviderStateMixin { late AnimationController _controller; double get maxHeight => MediaQuery.of(context).size.height; - double? get headerTopMargin => lerp(20, 20 + MediaQuery.of(context).padding.top); + double? get headerTopMargin => + lerp(20, 20 + MediaQuery.of(context).padding.top); double? get headerFontSize => lerp(14, 24); @@ -38,9 +42,12 @@ class RecentConnectionBottomSheetState extends State lerp(iconStartSize, iconEndSize); double? iconTopMargin(int index) => - lerp(iconStartMarginTop, iconEndMarginTop + index * (iconsVerticalSpacing + iconEndSize))! + headerTopMargin!; + lerp(iconStartMarginTop, + iconEndMarginTop + index * (iconsVerticalSpacing + iconEndSize))! + + headerTopMargin!; - double? iconLeftMargin(int index) => lerp(index * (iconsHorizontalSpacing + iconStartSize), 0); + double? iconLeftMargin(int index) => + lerp(index * (iconsHorizontalSpacing + iconStartSize), 0); @override void initState() { @@ -57,7 +64,8 @@ class RecentConnectionBottomSheetState extends State lerpDouble(min, max, _controller.value); + double? lerp(double min, double max) => + lerpDouble(min, max, _controller.value); @override Widget build(BuildContext context) { @@ -77,7 +85,9 @@ class RecentConnectionBottomSheetState extends State 0.0) { @@ -256,7 +268,8 @@ class SheetHeader extends StatelessWidget { final double? fontSize; final double? topMargin; - const SheetHeader({Key? key, required this.fontSize, required this.topMargin}) : super(key: key); + const SheetHeader({Key? key, required this.fontSize, required this.topMargin}) + : super(key: key); @override Widget build(BuildContext context) { diff --git a/flutter/lib/widgets/sail_app_bar.dart b/flutter/lib/widgets/sail_app_bar.dart index 95fe245..067eb72 100644 --- a/flutter/lib/widgets/sail_app_bar.dart +++ b/flutter/lib/widgets/sail_app_bar.dart @@ -1,11 +1,10 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/models/app_model.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/models/app_model.dart'; class SailAppBar extends AppBar { - SailAppBar({Key? key, required this.appTitle}) - : super(key: key); + SailAppBar({Key? key, required this.appTitle}) : super(key: key); final String appTitle; @@ -27,10 +26,12 @@ class SailAppBarState extends State { return AppBar( title: Text( widget.appTitle, - style: TextStyle(color: _appModel.isOn ? Colors.black : Colors.white, fontWeight: FontWeight.w900), + style: TextStyle( + color: _appModel.isOn ? Colors.black : Colors.white, + fontWeight: FontWeight.w900), ), elevation: 0, - backgroundColor: _appModel.isOn ? AppColors.yellowColor : AppColors.grayColor -); + backgroundColor: + _appModel.isOn ? AppColors.yellowColor : AppColors.grayColor); } } diff --git a/flutter/lib/widgets/select_location.dart b/flutter/lib/widgets/select_location.dart index b41903b..e1f3796 100644 --- a/flutter/lib/widgets/select_location.dart +++ b/flutter/lib/widgets/select_location.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:provider/provider.dart'; -import 'package:sail/constant/app_colors.dart'; -import 'package:sail/model/themeCollection.dart'; -import 'package:sail/models/server_model.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/utils/l10n.dart'; -import 'package:sail/utils/navigator_util.dart'; +import 'package:uuvpn/constant/app_colors.dart'; +import 'package:uuvpn/model/themeCollection.dart'; +import 'package:uuvpn/models/server_model.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/utils/l10n.dart'; +import 'package:uuvpn/utils/navigator_util.dart'; class SelectLocation extends StatefulWidget { const SelectLocation({ diff --git a/flutter/lib/widgets/sliding_cards.dart b/flutter/lib/widgets/sliding_cards.dart index 4e6897e..22ac34f 100644 --- a/flutter/lib/widgets/sliding_cards.dart +++ b/flutter/lib/widgets/sliding_cards.dart @@ -3,11 +3,11 @@ import 'dart:math' as math; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:provider/provider.dart'; -import 'package:sail/entity/plan_entity.dart'; -import 'package:sail/models/user_model.dart'; -import 'package:sail/service/plan_service.dart'; -import 'package:sail/service/user_service.dart'; -import 'package:sail/utils/navigator_util.dart'; +import 'package:uuvpn/entity/plan_entity.dart'; +import 'package:uuvpn/models/user_model.dart'; +import 'package:uuvpn/service/plan_service.dart'; +import 'package:uuvpn/service/user_service.dart'; +import 'package:uuvpn/utils/navigator_util.dart'; class SlidingCardsView extends StatefulWidget { const SlidingCardsView({Key? key}) : super(key: key); diff --git a/flutter/pubspec.lock b/flutter/pubspec.lock index de44a77..b438f93 100644 --- a/flutter/pubspec.lock +++ b/flutter/pubspec.lock @@ -93,10 +93,18 @@ packages: dependency: "direct main" description: name: dio - sha256: "7d328c4d898a61efc3cd93655a0955858e29a0aa647f0f9e02d59b3bb275e2e8" + sha256: e17f6b3097b8c51b72c74c9f071a605c47bcc8893839bd66732457a5ebe73714 url: "https://pub.dev" source: hosted - version: "4.0.6" + version: "5.5.0+1" + dio_web_adapter: + dependency: transitive + description: + name: dio_web_adapter + sha256: "36c5b2d79eb17cdae41e974b7a8284fec631651d2a6f39a8a2ff22327e90aeac" + url: "https://pub.dev" + source: hosted + version: "1.0.1" equatable: dependency: transitive description: diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index 3f0fbdf..e997be4 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -1,5 +1,5 @@ -name: sail -description: a proxy client application. +name: uuvpn +description: ios/android vpn proxy client application. # The following line prevents the package from being accidentally published to # pub.dev using `pub publish`. This is preferred for private packages. @@ -32,7 +32,8 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. another_flushbar: ^1.12.30 cupertino_icons: ^1.0.5 - dio: ^4.0.6 + # dio: ^4.0.6 + dio: ^5.5.0+1 fluro: ^2.0.3 shared_preferences: ^2.0.15 webview_flutter: ^3.0.4 diff --git a/flutter/test/widget_test.dart b/flutter/test/widget_test.dart index cda2ed1..9edcb4c 100644 --- a/flutter/test/widget_test.dart +++ b/flutter/test/widget_test.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:sail/main.dart'; +import 'package:uuvpn/main.dart'; void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async {