diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts
index 5523449..3d655e0 100644
--- a/android/app/build.gradle.kts
+++ b/android/app/build.gradle.kts
@@ -35,6 +35,12 @@ android {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig = signingConfigs.getByName("debug")
+ isMinifyEnabled = false
+ isShrinkResources = false
+ proguardFiles(
+ getDefaultProguardFile("proguard-android-optimize.txt"),
+ "proguard-rules.pro"
+ )
}
}
}
diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro
new file mode 100644
index 0000000..b5b1f0f
--- /dev/null
+++ b/android/app/proguard-rules.pro
@@ -0,0 +1,10 @@
+-keep class com.sun.jna.* { *; }
+-keepclassmembers class * extends com.sun.jna.* { public *; }
+
+-dontwarn java.awt.**
+-dontwarn javax.swing.**
+-dontwarn java.beans.**
+-dontwarn sun.misc.**
+
+-keep class org.vosk.** { *; }
+-keep class net.java.dev.jna.** { *; }
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 87ae0f5..d7b881b 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,6 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
index db77bb4..e8f051e 100644
Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
index 17987b7..1e6c45d 100644
Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index 09d4391..aad9ce4 100644
Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index d5f1c8d..f7dfd99 100644
Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 4d6372e..717a301 100644
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/android/build.gradle.kts b/android/build.gradle.kts
index dbee657..2c0b9ad 100644
--- a/android/build.gradle.kts
+++ b/android/build.gradle.kts
@@ -1,5 +1,7 @@
allprojects {
repositories {
+ maven { url = uri("https://maven.aliyun.com/repository/google") }
+ maven { url = uri("https://maven.aliyun.com/repository/public") }
google()
mavenCentral()
}
diff --git a/android/build/reports/problems/problems-report.html b/android/build/reports/problems/problems-report.html
new file mode 100644
index 0000000..e85474d
--- /dev/null
+++ b/android/build/reports/problems/problems-report.html
@@ -0,0 +1,663 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Gradle Configuration Cache
+
+
+
+
+
+
+ Loading...
+
+
+
+
+
+
+
diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts
index ca7fe06..d813785 100644
--- a/android/settings.gradle.kts
+++ b/android/settings.gradle.kts
@@ -11,6 +11,9 @@ pluginManagement {
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
repositories {
+ maven { url = uri("https://maven.aliyun.com/repository/google") }
+ maven { url = uri("https://maven.aliyun.com/repository/public") }
+ maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") }
google()
mavenCentral()
gradlePluginPortal()
diff --git a/assets/logo.png b/assets/logo.png
new file mode 100644
index 0000000..b2525d3
Binary files /dev/null and b/assets/logo.png differ
diff --git a/assets/models/vosk-model-small-cn-0.22.zip b/assets/models/vosk-model-small-cn-0.22.zip
new file mode 100644
index 0000000..b465498
Binary files /dev/null and b/assets/models/vosk-model-small-cn-0.22.zip differ
diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist
index 1dc6cf7..391a902 100644
--- a/ios/Flutter/AppFrameworkInfo.plist
+++ b/ios/Flutter/AppFrameworkInfo.plist
@@ -20,7 +20,5 @@
????
CFBundleVersion
1.0
- MinimumOSVersion
- 13.0
diff --git a/ios/Podfile b/ios/Podfile
index 620e46e..c9c25a1 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -39,5 +39,16 @@ end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
+
+ target.build_configurations.each do |config|
+ config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
+ '$(inherited)',
+ 'PERMISSION_CAMERA=1',
+ 'PERMISSION_MICROPHONE=1',
+ 'PERMISSION_SPEECH_RECOGNIZER=1',
+ 'PERMISSION_PHOTOS=1',
+ 'PERMISSION_PHOTOS_ADD_ONLY=1',
+ ]
+ end
end
end
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
new file mode 100644
index 0000000..3ea8660
--- /dev/null
+++ b/ios/Podfile.lock
@@ -0,0 +1,161 @@
+PODS:
+ - CwlCatchException (2.2.1):
+ - CwlCatchExceptionSupport (~> 2.2.1)
+ - CwlCatchExceptionSupport (2.2.1)
+ - Flutter (1.0.0)
+ - GoogleDataTransport (9.4.1):
+ - GoogleUtilities/Environment (~> 7.7)
+ - nanopb (< 2.30911.0, >= 2.30908.0)
+ - PromisesObjC (< 3.0, >= 1.2)
+ - GoogleMLKit/BarcodeScanning (4.0.0):
+ - GoogleMLKit/MLKitCore
+ - MLKitBarcodeScanning (~> 3.0.0)
+ - GoogleMLKit/MLKitCore (4.0.0):
+ - MLKitCommon (~> 9.0.0)
+ - GoogleToolboxForMac/DebugUtils (2.3.2):
+ - GoogleToolboxForMac/Defines (= 2.3.2)
+ - GoogleToolboxForMac/Defines (2.3.2)
+ - GoogleToolboxForMac/Logger (2.3.2):
+ - GoogleToolboxForMac/Defines (= 2.3.2)
+ - "GoogleToolboxForMac/NSData+zlib (2.3.2)":
+ - GoogleToolboxForMac/Defines (= 2.3.2)
+ - "GoogleToolboxForMac/NSDictionary+URLArguments (2.3.2)":
+ - GoogleToolboxForMac/DebugUtils (= 2.3.2)
+ - GoogleToolboxForMac/Defines (= 2.3.2)
+ - "GoogleToolboxForMac/NSString+URLArguments (= 2.3.2)"
+ - "GoogleToolboxForMac/NSString+URLArguments (2.3.2)"
+ - GoogleUtilities/Environment (7.13.3):
+ - GoogleUtilities/Privacy
+ - PromisesObjC (< 3.0, >= 1.2)
+ - GoogleUtilities/Logger (7.13.3):
+ - GoogleUtilities/Environment
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Privacy (7.13.3)
+ - GoogleUtilities/UserDefaults (7.13.3):
+ - GoogleUtilities/Logger
+ - GoogleUtilities/Privacy
+ - GoogleUtilitiesComponents (1.1.0):
+ - GoogleUtilities/Logger
+ - GTMSessionFetcher/Core (2.3.0)
+ - image_picker_ios (0.0.1):
+ - Flutter
+ - MLImage (1.0.0-beta4)
+ - MLKitBarcodeScanning (3.0.0):
+ - MLKitCommon (~> 9.0)
+ - MLKitVision (~> 5.0)
+ - MLKitCommon (9.0.0):
+ - GoogleDataTransport (~> 9.0)
+ - GoogleToolboxForMac/Logger (~> 2.1)
+ - "GoogleToolboxForMac/NSData+zlib (~> 2.1)"
+ - "GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)"
+ - GoogleUtilities/UserDefaults (~> 7.0)
+ - GoogleUtilitiesComponents (~> 1.0)
+ - GTMSessionFetcher/Core (< 3.0, >= 1.1)
+ - MLKitVision (5.0.0):
+ - GoogleToolboxForMac/Logger (~> 2.1)
+ - "GoogleToolboxForMac/NSData+zlib (~> 2.1)"
+ - GTMSessionFetcher/Core (< 3.0, >= 1.1)
+ - MLImage (= 1.0.0-beta4)
+ - MLKitCommon (~> 9.0)
+ - mobile_scanner (3.5.6):
+ - Flutter
+ - GoogleMLKit/BarcodeScanning (~> 4.0.0)
+ - nanopb (2.30910.0):
+ - nanopb/decode (= 2.30910.0)
+ - nanopb/encode (= 2.30910.0)
+ - nanopb/decode (2.30910.0)
+ - nanopb/encode (2.30910.0)
+ - permission_handler_apple (9.3.0):
+ - Flutter
+ - PromisesObjC (2.4.0)
+ - shared_preferences_foundation (0.0.1):
+ - Flutter
+ - FlutterMacOS
+ - speech_to_text (7.2.0):
+ - CwlCatchException
+ - Flutter
+ - FlutterMacOS
+ - sqflite_darwin (0.0.4):
+ - Flutter
+ - FlutterMacOS
+ - url_launcher_ios (0.0.1):
+ - Flutter
+ - vosk_flutter_service (0.1.1):
+ - Flutter
+
+DEPENDENCIES:
+ - Flutter (from `Flutter`)
+ - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
+ - mobile_scanner (from `.symlinks/plugins/mobile_scanner/ios`)
+ - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
+ - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
+ - speech_to_text (from `.symlinks/plugins/speech_to_text/darwin`)
+ - sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`)
+ - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
+ - vosk_flutter_service (from `.symlinks/plugins/vosk_flutter_service/ios`)
+
+SPEC REPOS:
+ trunk:
+ - CwlCatchException
+ - CwlCatchExceptionSupport
+ - GoogleDataTransport
+ - GoogleMLKit
+ - GoogleToolboxForMac
+ - GoogleUtilities
+ - GoogleUtilitiesComponents
+ - GTMSessionFetcher
+ - MLImage
+ - MLKitBarcodeScanning
+ - MLKitCommon
+ - MLKitVision
+ - nanopb
+ - PromisesObjC
+
+EXTERNAL SOURCES:
+ Flutter:
+ :path: Flutter
+ image_picker_ios:
+ :path: ".symlinks/plugins/image_picker_ios/ios"
+ mobile_scanner:
+ :path: ".symlinks/plugins/mobile_scanner/ios"
+ permission_handler_apple:
+ :path: ".symlinks/plugins/permission_handler_apple/ios"
+ shared_preferences_foundation:
+ :path: ".symlinks/plugins/shared_preferences_foundation/darwin"
+ speech_to_text:
+ :path: ".symlinks/plugins/speech_to_text/darwin"
+ sqflite_darwin:
+ :path: ".symlinks/plugins/sqflite_darwin/darwin"
+ url_launcher_ios:
+ :path: ".symlinks/plugins/url_launcher_ios/ios"
+ vosk_flutter_service:
+ :path: ".symlinks/plugins/vosk_flutter_service/ios"
+
+SPEC CHECKSUMS:
+ CwlCatchException: 7acc161b299a6de7f0a46a6ed741eae2c8b4d75a
+ CwlCatchExceptionSupport: 54ccab8d8c78907b57f99717fb19d4cc3bce02dc
+ Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
+ GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a
+ GoogleMLKit: 2bd0dc6253c4d4f227aad460f69215a504b2980e
+ GoogleToolboxForMac: 8bef7c7c5cf7291c687cf5354f39f9db6399ad34
+ GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15
+ GoogleUtilitiesComponents: 679b2c881db3b615a2777504623df6122dd20afe
+ GTMSessionFetcher: 3a63d75eecd6aa32c2fc79f578064e1214dfdec2
+ image_picker_ios: 4f2f91b01abdb52842a8e277617df877e40f905b
+ MLImage: 7bb7c4264164ade9bf64f679b40fb29c8f33ee9b
+ MLKitBarcodeScanning: 04e264482c5f3810cb89ebc134ef6b61e67db505
+ MLKitCommon: c1b791c3e667091918d91bda4bba69a91011e390
+ MLKitVision: 8baa5f46ee3352614169b85250574fde38c36f49
+ mobile_scanner: 38dcd8a49d7d485f632b7de65e4900010187aef2
+ nanopb: 438bc412db1928dac798aa6fd75726007be04262
+ permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
+ PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
+ shared_preferences_foundation: 5086985c1d43c5ba4d5e69a4e8083a389e2909e6
+ speech_to_text: 87bf9298952e8d9073be1b6aade6d5758db5170c
+ sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d
+ url_launcher_ios: bb13df5870e8c4234ca12609d04010a21be43dfa
+ vosk_flutter_service: f2468d1e2a71ef740fa2b011072c0db5c9db92b4
+
+PODFILE CHECKSUM: 6ee64a990764a8fa4675fa771bfc90cb436e0452
+
+COCOAPODS: 1.16.2
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 1e8fdf4..fb50889 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -8,12 +8,14 @@
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+ 2E04EE7A2058FEF3933A2B95 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F3E80106CE7ED79A62A6BB /* Pods_RunnerTests.framework */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+ C99BD58100E5E11901401CCA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4139977D07D97FB62585E8CD /* Pods_Runner.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -40,11 +42,18 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
+ 096CC58A6C3E67BF6E963D43 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
+ 31AD78A16558003E9B63C41B /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; };
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 4139977D07D97FB62585E8CD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 551B51F14108C6827DE32591 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; };
+ 6790C7D1B29C11DB6730CF5A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
+ 6B31EAF52AE7B4040C25C94C /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ 6E0D99486EF4607C76F1D798 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
@@ -55,13 +64,23 @@
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 = ""; };
+ A9F3E80106CE7ED79A62A6BB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
+ 80B8D16098254EFE83FFC01E /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2E04EE7A2058FEF3933A2B95 /* Pods_RunnerTests.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ C99BD58100E5E11901401CCA /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -76,6 +95,15 @@
path = RunnerTests;
sourceTree = "";
};
+ 75F4588978CEB3D7883B557E /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 4139977D07D97FB62585E8CD /* Pods_Runner.framework */,
+ A9F3E80106CE7ED79A62A6BB /* Pods_RunnerTests.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
@@ -94,6 +122,8 @@
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
+ FB4377A0B6990F16B3684000 /* Pods */,
+ 75F4588978CEB3D7883B557E /* Frameworks */,
);
sourceTree = "";
};
@@ -121,6 +151,20 @@
path = Runner;
sourceTree = "";
};
+ FB4377A0B6990F16B3684000 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 6B31EAF52AE7B4040C25C94C /* Pods-Runner.debug.xcconfig */,
+ 6790C7D1B29C11DB6730CF5A /* Pods-Runner.release.xcconfig */,
+ 096CC58A6C3E67BF6E963D43 /* Pods-Runner.profile.xcconfig */,
+ 551B51F14108C6827DE32591 /* Pods-RunnerTests.debug.xcconfig */,
+ 6E0D99486EF4607C76F1D798 /* Pods-RunnerTests.release.xcconfig */,
+ 31AD78A16558003E9B63C41B /* Pods-RunnerTests.profile.xcconfig */,
+ );
+ name = Pods;
+ path = Pods;
+ sourceTree = "";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -128,8 +172,10 @@
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
+ A7EFE6B4A06F92680E95C9C5 /* [CP] Check Pods Manifest.lock */,
331C807D294A63A400263BE5 /* Sources */,
331C807F294A63A400263BE5 /* Resources */,
+ 80B8D16098254EFE83FFC01E /* Frameworks */,
);
buildRules = (
);
@@ -145,12 +191,15 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
+ 248A8C3A0B504B1E7E60B456 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+ 567F914051B59E065686899B /* [CP] Embed Pods Frameworks */,
+ EB3656BCB985502D283A7F0D /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -222,6 +271,28 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
+ 248A8C3A0B504B1E7E60B456 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@@ -238,6 +309,23 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
+ 567F914051B59E065686899B /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@@ -253,6 +341,45 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
+ A7EFE6B4A06F92680E95C9C5 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ EB3656BCB985502D283A7F0D /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -369,7 +496,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- PRODUCT_BUNDLE_IDENTIFIER = com.example.zhinianManage;
+ PRODUCT_BUNDLE_IDENTIFIER = com.lishaohua.zhinianManage.dev;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@@ -379,13 +506,14 @@
};
331C8088294A63A400263BE5 /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 551B51F14108C6827DE32591 /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.example.zhinianManage.RunnerTests;
+ PRODUCT_BUNDLE_IDENTIFIER = com.lishaohua.zhinianManage.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -396,13 +524,14 @@
};
331C8089294A63A400263BE5 /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 6E0D99486EF4607C76F1D798 /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.example.zhinianManage.RunnerTests;
+ PRODUCT_BUNDLE_IDENTIFIER = com.lishaohua.zhinianManage.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
@@ -411,13 +540,14 @@
};
331C808A294A63A400263BE5 /* Profile */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 31AD78A16558003E9B63C41B /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.example.zhinianManage.RunnerTests;
+ PRODUCT_BUNDLE_IDENTIFIER = com.lishaohua.zhinianManage.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
@@ -549,7 +679,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- PRODUCT_BUNDLE_IDENTIFIER = com.example.zhinianManage;
+ PRODUCT_BUNDLE_IDENTIFIER = com.lishaohua.zhinianManage.dev;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -572,7 +702,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- PRODUCT_BUNDLE_IDENTIFIER = com.example.zhinianManage;
+ PRODUCT_BUNDLE_IDENTIFIER = com.lishaohua.zhinianManage.dev;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
diff --git a/ios/Runner.xcodeproj/project.pbxproj.bak b/ios/Runner.xcodeproj/project.pbxproj.bak
new file mode 100644
index 0000000..758bc44
--- /dev/null
+++ b/ios/Runner.xcodeproj/project.pbxproj.bak
@@ -0,0 +1,731 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 54;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+ 2E04EE7A2058FEF3933A2B95 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F3E80106CE7ED79A62A6BB /* Pods_RunnerTests.framework */; };
+ 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+ C99BD58100E5E11901401CCA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4139977D07D97FB62585E8CD /* Pods_Runner.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 97C146E61CF9000F007C117D /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 97C146ED1CF9000F007C117D;
+ remoteInfo = Runner;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 096CC58A6C3E67BF6E963D43 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
+ 31AD78A16558003E9B63C41B /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; };
+ 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; };
+ 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 4139977D07D97FB62585E8CD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 551B51F14108C6827DE32591 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; };
+ 6790C7D1B29C11DB6730CF5A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
+ 6B31EAF52AE7B4040C25C94C /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ 6E0D99486EF4607C76F1D798 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; };
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
+ 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 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 = ""; };
+ A9F3E80106CE7ED79A62A6BB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 80B8D16098254EFE83FFC01E /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2E04EE7A2058FEF3933A2B95 /* Pods_RunnerTests.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 97C146EB1CF9000F007C117D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ C99BD58100E5E11901401CCA /* Pods_Runner.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 331C8082294A63A400263BE5 /* RunnerTests */ = {
+ isa = PBXGroup;
+ children = (
+ 331C807B294A618700263BE5 /* RunnerTests.swift */,
+ );
+ path = RunnerTests;
+ sourceTree = "";
+ };
+ 75F4588978CEB3D7883B557E /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 4139977D07D97FB62585E8CD /* Pods_Runner.framework */,
+ A9F3E80106CE7ED79A62A6BB /* Pods_RunnerTests.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 9740EEB11CF90186004384FC /* Flutter */ = {
+ isa = PBXGroup;
+ children = (
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */,
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */,
+ );
+ name = Flutter;
+ sourceTree = "";
+ };
+ 97C146E51CF9000F007C117D = {
+ isa = PBXGroup;
+ children = (
+ 9740EEB11CF90186004384FC /* Flutter */,
+ 97C146F01CF9000F007C117D /* Runner */,
+ 97C146EF1CF9000F007C117D /* Products */,
+ 331C8082294A63A400263BE5 /* RunnerTests */,
+ FB4377A0B6990F16B3684000 /* Pods */,
+ 75F4588978CEB3D7883B557E /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 97C146EF1CF9000F007C117D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146EE1CF9000F007C117D /* Runner.app */,
+ 331C8081294A63A400263BE5 /* RunnerTests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 97C146F01CF9000F007C117D /* Runner */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146FA1CF9000F007C117D /* Main.storyboard */,
+ 97C146FD1CF9000F007C117D /* Assets.xcassets */,
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
+ 97C147021CF9000F007C117D /* Info.plist */,
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
+ );
+ path = Runner;
+ sourceTree = "";
+ };
+ FB4377A0B6990F16B3684000 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 6B31EAF52AE7B4040C25C94C /* Pods-Runner.debug.xcconfig */,
+ 6790C7D1B29C11DB6730CF5A /* Pods-Runner.release.xcconfig */,
+ 096CC58A6C3E67BF6E963D43 /* Pods-Runner.profile.xcconfig */,
+ 551B51F14108C6827DE32591 /* Pods-RunnerTests.debug.xcconfig */,
+ 6E0D99486EF4607C76F1D798 /* Pods-RunnerTests.release.xcconfig */,
+ 31AD78A16558003E9B63C41B /* Pods-RunnerTests.profile.xcconfig */,
+ );
+ name = Pods;
+ path = Pods;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 331C8080294A63A400263BE5 /* RunnerTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
+ buildPhases = (
+ A7EFE6B4A06F92680E95C9C5 /* [CP] Check Pods Manifest.lock */,
+ 331C807D294A63A400263BE5 /* Sources */,
+ 331C807F294A63A400263BE5 /* Resources */,
+ 80B8D16098254EFE83FFC01E /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 331C8086294A63A400263BE5 /* PBXTargetDependency */,
+ );
+ name = RunnerTests;
+ productName = RunnerTests;
+ productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+ 97C146ED1CF9000F007C117D /* Runner */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
+ buildPhases = (
+ 248A8C3A0B504B1E7E60B456 /* [CP] Check Pods Manifest.lock */,
+ 9740EEB61CF901F6004384FC /* Run Script */,
+ 97C146EA1CF9000F007C117D /* Sources */,
+ 97C146EB1CF9000F007C117D /* Frameworks */,
+ 97C146EC1CF9000F007C117D /* Resources */,
+ 9705A1C41CF9048500538489 /* Embed Frameworks */,
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+ 567F914051B59E065686899B /* [CP] Embed Pods Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = Runner;
+ productName = Runner;
+ productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 97C146E61CF9000F007C117D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ BuildIndependentTargetsInParallel = YES;
+ LastUpgradeCheck = 1510;
+ ORGANIZATIONNAME = "";
+ TargetAttributes = {
+ 331C8080294A63A400263BE5 = {
+ CreatedOnToolsVersion = 14.0;
+ TestTargetID = 97C146ED1CF9000F007C117D;
+ };
+ 97C146ED1CF9000F007C117D = {
+ CreatedOnToolsVersion = 7.3.1;
+ LastSwiftMigration = 1100;
+ };
+ };
+ };
+ buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 97C146E51CF9000F007C117D;
+ productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 97C146ED1CF9000F007C117D /* Runner */,
+ 331C8080294A63A400263BE5 /* RunnerTests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 331C807F294A63A400263BE5 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 97C146EC1CF9000F007C117D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 248A8C3A0B504B1E7E60B456 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
+ isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
+ );
+ name = "Thin Binary";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
+ };
+ 567F914051B59E065686899B /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 9740EEB61CF901F6004384FC /* Run Script */ = {
+ isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Script";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
+ };
+ A7EFE6B4A06F92680E95C9C5 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 331C807D294A63A400263BE5 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 97C146EA1CF9000F007C117D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 97C146ED1CF9000F007C117D /* Runner */;
+ targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C146FB1CF9000F007C117D /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C147001CF9000F007C117D /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 249021D3217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Profile;
+ };
+ 249021D4217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = UBDH3YTVFW;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.zhinianManage;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
+ 331C8088294A63A400263BE5 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 551B51F14108C6827DE32591 /* Pods-RunnerTests.debug.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.zhinianManage.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Debug;
+ };
+ 331C8089294A63A400263BE5 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 6E0D99486EF4607C76F1D798 /* Pods-RunnerTests.release.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.zhinianManage.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Release;
+ };
+ 331C808A294A63A400263BE5 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 31AD78A16558003E9B63C41B /* Pods-RunnerTests.profile.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.zhinianManage.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Profile;
+ };
+ 97C147031CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 97C147041CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 97C147061CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = UBDH3YTVFW;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.zhinianManage;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 97C147071CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = UBDH3YTVFW;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.zhinianManage;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 331C8088294A63A400263BE5 /* Debug */,
+ 331C8089294A63A400263BE5 /* Release */,
+ 331C808A294A63A400263BE5 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147031CF9000F007C117D /* Debug */,
+ 97C147041CF9000F007C117D /* Release */,
+ 249021D3217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147061CF9000F007C117D /* Debug */,
+ 97C147071CF9000F007C117D /* Release */,
+ 249021D4217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 97C146E61CF9000F007C117D /* Project object */;
+}
diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata
index 1d526a1..21a3cc1 100644
--- a/ios/Runner.xcworkspace/contents.xcworkspacedata
+++ b/ios/Runner.xcworkspace/contents.xcworkspacedata
@@ -4,4 +4,7 @@
+
+
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index 6266644..c30b367 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -2,12 +2,15 @@ import Flutter
import UIKit
@main
-@objc class AppDelegate: FlutterAppDelegate {
+@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
- GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
+
+ func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) {
+ GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry)
+ }
}
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
index dc9ada4..5106c57 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
index 7353c41..a4359e7 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
index 797d452..a8e2dcf 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
index 6ed2d93..b9c29cb 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
index 4cd7b00..2dd4ad1 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
index fe73094..aae486c 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
index 321773c..417f87c 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
index 797d452..a8e2dcf 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
index 502f463..fbdece0 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
index 0ec3034..943ec8b 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
index 0ec3034..943ec8b 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
index e9f5fea..b6da22d 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
index 84ac32a..909fb7a 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
index 8953cba..c81ad00 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
index 0467bf1..7619153 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 860d891..9d9cc12 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -2,10 +2,22 @@
+ CADisableMinimumFrameDurationOnPhone
+
+ NSCameraUsageDescription
+ 需要使用相机扫描客户出示的核销二维码
+ NSPhotoLibraryUsageDescription
+ 需要访问相册以选择活动封面、订单凭证等图片
+ NSPhotoLibraryAddUsageDescription
+ 需要将凭证或活动二维码保存到相册
+ NSMicrophoneUsageDescription
+ 需要使用麦克风进行语音输入
+ NSSpeechRecognitionUsageDescription
+ 需要使用语音识别将语音转写为文字
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
CFBundleDisplayName
- Zhinian Manage
+ 智念商家端
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
@@ -24,6 +36,29 @@
$(FLUTTER_BUILD_NUMBER)
LSRequiresIPhoneOS
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+ UISceneConfigurations
+
+ UIWindowSceneSessionRoleApplication
+
+
+ UISceneClassName
+ UIWindowScene
+ UISceneConfigurationName
+ flutter
+ UISceneDelegateClassName
+ FlutterSceneDelegate
+ UISceneStoryboardFile
+ Main
+
+
+
+
+ UIApplicationSupportsIndirectInputEvents
+
UILaunchStoryboardName
LaunchScreen
UIMainStoryboardFile
@@ -41,9 +76,5 @@
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
- CADisableMinimumFrameDurationOnPhone
-
- UIApplicationSupportsIndirectInputEvents
-
diff --git a/lib/app.dart b/lib/app.dart
index 221af74..a46265a 100644
--- a/lib/app.dart
+++ b/lib/app.dart
@@ -14,14 +14,27 @@ class ZhinianApp extends ConsumerWidget {
final router = ref.watch(routerProvider);
final settings = ref.watch(settingsProvider);
+ final platformBrightness = MediaQuery.platformBrightnessOf(context);
+ final isDark = switch (settings.themeMode) {
+ AppThemeMode.light => false,
+ AppThemeMode.dark => true,
+ AppThemeMode.system => platformBrightness == Brightness.dark,
+ };
+ AppColors.applyMode(isDark);
+
return MaterialApp.router(
- title: '智念管理',
+ title: '智念商家端',
debugShowCheckedModeBanner: false,
- theme: AppTheme.lightTheme,
- darkTheme: AppTheme.darkTheme,
- themeMode: settings.flutterThemeMode,
+ theme: AppTheme.theme,
routerConfig: router,
locale: settings.locale,
+ // Pages read AppColors.* statics directly; without a key, Router won't
+ // rebuild descendants on a pure theme toggle. Keying by mode forces the
+ // whole subtree to remount so every page picks up the new colors.
+ builder: (context, child) => KeyedSubtree(
+ key: ValueKey(isDark),
+ child: child ?? const SizedBox.shrink(),
+ ),
localizationsDelegates: const [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb
index 7cac705..bdb7537 100644
--- a/lib/l10n/app_en.arb
+++ b/lib/l10n/app_en.arb
@@ -1,6 +1,6 @@
{
"@@locale": "en",
- "appTitle": "Zhinian Manage",
+ "appTitle": "Zhinian Merchant",
"appSubtitle": "Hotel & Scenic Smart Management",
"welcomeLogin": "Welcome",
"enterAccountInfo": "Please enter your account info",
@@ -71,7 +71,7 @@
"unknownLocation": "Unknown Location",
"workOrderId": "Work Order ID",
"creator": "Creator",
- "assignee": "Assignee",
+ "assignee": "Accepting Dept",
"notAssigned": "Not Assigned",
"category": "Category",
"priority": "Priority",
@@ -129,8 +129,8 @@
"employeeDesc": "Add and manage employee accounts",
"dataReport": "Data Reports",
"reportDesc": "View operation analytics",
- "appMarket": "App Market",
- "marketDesc": "Extend more feature modules",
+ "appMarket": "App Plugins",
+ "marketDesc": "More business extension plugins",
"helpCenter": "Help Center",
"helpDesc": "User guide & FAQ",
"aboutUs": "About Us",
@@ -193,7 +193,7 @@
"contactTeam": "Contact our support team for more help",
"contactService": "Contact Support",
"productIntro": "Product Introduction",
- "productDesc": "Zhinian Manage is a smart management app for hotels and scenic spots. With AI assistant, event publishing, order management, and QR verification, it helps businesses operate efficiently.",
+ "productDesc": "Zhinian Merchant is a smart management app for hotels and scenic spots. With AI assistant, event publishing, order management, and QR verification, it helps businesses operate efficiently.",
"officialWebsite": "Official Website",
"servicePhone": "Service Phone",
"techSupport": "Tech Support",
@@ -238,11 +238,11 @@
"spaPackage": "SPA Package",
"orderUnit": " orders",
"latestVersion": "Latest Version",
- "agreementTitle": "Zhinian Manage User Agreement",
- "privacyTitle": "Zhinian Manage Privacy Policy",
+ "agreementTitle": "Zhinian Merchant User Agreement",
+ "privacyTitle": "Zhinian Merchant Privacy Policy",
"lastUpdated": "Last updated: December 2024",
"agreementSection1": "1. Scope",
- "agreementPara1": "This agreement is between you and Zhinian Tech regarding the use of Zhinian Manage services. Services include but are not limited to event publishing, order management, work order processing, QR verification, etc.",
+ "agreementPara1": "This agreement is between you and Zhinian Tech regarding the use of Zhinian Merchant services. Services include but are not limited to event publishing, order management, work order processing, QR verification, etc.",
"agreementSection2": "2. Account Registration",
"agreementPara2": "You need to register an account to use our services. Provide a valid phone number and set a secure password. You are responsible for all actions under your account.",
"agreementSection3": "3. Service Usage Rules",
@@ -268,5 +268,28 @@
"privacySection6": "6. Cookies & Local Storage",
"privacyPara6": "We use local storage to save login status and app settings for a better experience. You can clear this data in settings.",
"privacySection7": "7. Privacy Policy Updates",
- "privacyPara7": "We may update this privacy policy from time to time. Updates will be notified in the app, and continued use constitutes acceptance."
+ "privacyPara7": "We may update this privacy policy from time to time. Updates will be notified in the app, and continued use constitutes acceptance.",
+
+ "acceptOrder": "Accept",
+ "transferOrder": "Transfer",
+ "completeOrder": "Complete",
+ "selectTransferDept": "Select Department",
+ "acceptSuccess": "Order accepted",
+ "acceptFailed": "Failed to accept, please retry",
+ "transferSuccess": "Order transferred",
+ "transferFailed": "Failed to transfer, please retry",
+ "completeSuccess": "Order completed",
+ "completeFailed": "Operation failed, please retry",
+ "deptMaintenance": "Maintenance",
+ "deptCleaning": "Cleaning",
+ "deptFrontDesk": "Front Desk",
+ "deptSecurity": "Security",
+ "deptAdmin": "Administration",
+ "deptKitchen": "Kitchen",
+ "transferDept": "Transfer Dept",
+ "voiceListening": "Listening...",
+ "voiceUnavailable": "Speech recognition unavailable",
+ "voicePermissionDenied": "Microphone permission denied",
+ "voiceError": "Speech recognition error",
+ "voiceModelLoading": "Loading speech model, please wait..."
}
\ No newline at end of file
diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart
index 32d1202..9bafe64 100644
--- a/lib/l10n/app_localizations.dart
+++ b/lib/l10n/app_localizations.dart
@@ -103,7 +103,7 @@ abstract class AppLocalizations {
/// No description provided for @appTitle.
///
/// In zh, this message translates to:
- /// **'智念管理'**
+ /// **'智念商家端'**
String get appTitle;
/// No description provided for @appSubtitle.
@@ -439,7 +439,7 @@ abstract class AppLocalizations {
/// No description provided for @pending.
///
/// In zh, this message translates to:
- /// **'待处理'**
+ /// **'待接单'**
String get pending;
/// No description provided for @processing.
@@ -529,7 +529,7 @@ abstract class AppLocalizations {
/// No description provided for @assignee.
///
/// In zh, this message translates to:
- /// **'指派给'**
+ /// **'接单部门'**
String get assignee;
/// No description provided for @notAssigned.
@@ -901,13 +901,13 @@ abstract class AppLocalizations {
/// No description provided for @appMarket.
///
/// In zh, this message translates to:
- /// **'应用市场'**
+ /// **'应用插件'**
String get appMarket;
/// No description provided for @marketDesc.
///
/// In zh, this message translates to:
- /// **'扩展更多功能模块'**
+ /// **'更多业务扩展插件'**
String get marketDesc;
/// No description provided for @helpCenter.
@@ -1195,7 +1195,7 @@ abstract class AppLocalizations {
/// No description provided for @faq3A.
///
/// In zh, this message translates to:
- /// **'工单共有三种状态:待处理(刚创建未分配)、处理中(已分配给相关人员)、已完成(问题已解决)。可以在「订单工单」页面的工单Tab中按状态筛选。'**
+ /// **'工单共有三种状态:待接单(刚创建未分配)、处理中(已分配给相关人员)、已完成(问题已解决)。可以在「订单工单」页面的工单Tab中按状态筛选。'**
String get faq3A;
/// No description provided for @faq4Q.
@@ -1489,13 +1489,13 @@ abstract class AppLocalizations {
/// No description provided for @agreementTitle.
///
/// In zh, this message translates to:
- /// **'智念管理用户协议'**
+ /// **'智念商家端用户协议'**
String get agreementTitle;
/// No description provided for @privacyTitle.
///
/// In zh, this message translates to:
- /// **'智念管理隐私政策'**
+ /// **'智念商家端隐私政策'**
String get privacyTitle;
/// No description provided for @lastUpdated.
@@ -1513,7 +1513,7 @@ abstract class AppLocalizations {
/// No description provided for @agreementPara1.
///
/// In zh, this message translates to:
- /// **'本协议是您与智念科技之间关于使用智念管理服务所订立的协议。智念管理服务包括但不限于事件发布、订单管理、工单处理、扫码核销等功能。'**
+ /// **'本协议是您与智念科技之间关于使用智念商家端服务所订立的协议。智念商家端服务包括但不限于事件发布、订单管理、工单处理、扫码核销等功能。'**
String get agreementPara1;
/// No description provided for @agreementSection2.
@@ -1681,7 +1681,7 @@ abstract class AppLocalizations {
/// No description provided for @productDesc.
///
/// In zh, this message translates to:
- /// **'智念管理是一款专为酒店、景区等文旅行业打造的智能管理应用。通过AI助手、事件发布、订单工单管理、扫码核销等功能,帮助商家高效运营、提升服务质量。'**
+ /// **'智念商家端是一款专为酒店、景区等文旅行业打造的智能管理应用。通过AI助手、事件发布、订单工单管理、扫码核销等功能,帮助商家高效运营、提升服务质量。'**
String get productDesc;
/// No description provided for @officialWebsite.
@@ -1719,6 +1719,138 @@ abstract class AppLocalizations {
/// In zh, this message translates to:
/// **'All Rights Reserved'**
String get allRightsReserved;
+
+ /// No description provided for @acceptOrder.
+ ///
+ /// In zh, this message translates to:
+ /// **'接单'**
+ String get acceptOrder;
+
+ /// No description provided for @transferOrder.
+ ///
+ /// In zh, this message translates to:
+ /// **'转单'**
+ String get transferOrder;
+
+ /// No description provided for @completeOrder.
+ ///
+ /// In zh, this message translates to:
+ /// **'完成工单'**
+ String get completeOrder;
+
+ /// No description provided for @selectTransferDept.
+ ///
+ /// In zh, this message translates to:
+ /// **'选择转单部门'**
+ String get selectTransferDept;
+
+ /// No description provided for @acceptSuccess.
+ ///
+ /// In zh, this message translates to:
+ /// **'接单成功'**
+ String get acceptSuccess;
+
+ /// No description provided for @acceptFailed.
+ ///
+ /// In zh, this message translates to:
+ /// **'接单失败,请重试'**
+ String get acceptFailed;
+
+ /// No description provided for @transferSuccess.
+ ///
+ /// In zh, this message translates to:
+ /// **'转单成功'**
+ String get transferSuccess;
+
+ /// No description provided for @transferFailed.
+ ///
+ /// In zh, this message translates to:
+ /// **'转单失败,请重试'**
+ String get transferFailed;
+
+ /// No description provided for @completeSuccess.
+ ///
+ /// In zh, this message translates to:
+ /// **'工单已完成'**
+ String get completeSuccess;
+
+ /// No description provided for @completeFailed.
+ ///
+ /// In zh, this message translates to:
+ /// **'操作失败,请重试'**
+ String get completeFailed;
+
+ /// No description provided for @deptMaintenance.
+ ///
+ /// In zh, this message translates to:
+ /// **'维修部'**
+ String get deptMaintenance;
+
+ /// No description provided for @deptCleaning.
+ ///
+ /// In zh, this message translates to:
+ /// **'保洁部'**
+ String get deptCleaning;
+
+ /// No description provided for @deptFrontDesk.
+ ///
+ /// In zh, this message translates to:
+ /// **'前台部'**
+ String get deptFrontDesk;
+
+ /// No description provided for @deptSecurity.
+ ///
+ /// In zh, this message translates to:
+ /// **'安保部'**
+ String get deptSecurity;
+
+ /// No description provided for @deptAdmin.
+ ///
+ /// In zh, this message translates to:
+ /// **'行政部'**
+ String get deptAdmin;
+
+ /// No description provided for @deptKitchen.
+ ///
+ /// In zh, this message translates to:
+ /// **'厨房'**
+ String get deptKitchen;
+
+ /// No description provided for @transferDept.
+ ///
+ /// In zh, this message translates to:
+ /// **'转单部门'**
+ String get transferDept;
+
+ /// No description provided for @voiceListening.
+ ///
+ /// In zh, this message translates to:
+ /// **'正在聆听...'**
+ String get voiceListening;
+
+ /// No description provided for @voiceUnavailable.
+ ///
+ /// In zh, this message translates to:
+ /// **'当前设备不支持语音识别'**
+ String get voiceUnavailable;
+
+ /// No description provided for @voicePermissionDenied.
+ ///
+ /// In zh, this message translates to:
+ /// **'麦克风权限被拒绝'**
+ String get voicePermissionDenied;
+
+ /// No description provided for @voiceError.
+ ///
+ /// In zh, this message translates to:
+ /// **'语音识别出错'**
+ String get voiceError;
+
+ /// No description provided for @voiceModelLoading.
+ ///
+ /// In zh, this message translates to:
+ /// **'正在加载语音模型,请稍候...'**
+ String get voiceModelLoading;
}
class _AppLocalizationsDelegate
diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart
index a1b895e..246f5b2 100644
--- a/lib/l10n/app_localizations_en.dart
+++ b/lib/l10n/app_localizations_en.dart
@@ -9,7 +9,7 @@ class AppLocalizationsEn extends AppLocalizations {
AppLocalizationsEn([String locale = 'en']) : super(locale);
@override
- String get appTitle => 'Zhinian Manage';
+ String get appTitle => 'Zhinian Merchant';
@override
String get appSubtitle => 'Hotel & Scenic Smart Management';
@@ -224,7 +224,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get creator => 'Creator';
@override
- String get assignee => 'Assignee';
+ String get assignee => 'Accepting Dept';
@override
String get notAssigned => 'Not Assigned';
@@ -410,10 +410,10 @@ class AppLocalizationsEn extends AppLocalizations {
String get reportDesc => 'View operation analytics';
@override
- String get appMarket => 'App Market';
+ String get appMarket => 'App Plugins';
@override
- String get marketDesc => 'Extend more feature modules';
+ String get marketDesc => 'More business extension plugins';
@override
String get helpCenter => 'Help Center';
@@ -712,10 +712,10 @@ class AppLocalizationsEn extends AppLocalizations {
String get latestVersion => 'Latest Version';
@override
- String get agreementTitle => 'Zhinian Manage User Agreement';
+ String get agreementTitle => 'Zhinian Merchant User Agreement';
@override
- String get privacyTitle => 'Zhinian Manage Privacy Policy';
+ String get privacyTitle => 'Zhinian Merchant Privacy Policy';
@override
String get lastUpdated => 'Last updated: December 2024';
@@ -725,7 +725,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get agreementPara1 =>
- 'This agreement is between you and Zhinian Tech regarding the use of Zhinian Manage services. Services include but are not limited to event publishing, order management, work order processing, QR verification, etc.';
+ 'This agreement is between you and Zhinian Tech regarding the use of Zhinian Merchant services. Services include but are not limited to event publishing, order management, work order processing, QR verification, etc.';
@override
String get agreementSection2 => '2. Account Registration';
@@ -823,7 +823,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get productDesc =>
- 'Zhinian Manage is a smart management app for hotels and scenic spots. With AI assistant, event publishing, order management, and QR verification, it helps businesses operate efficiently.';
+ 'Zhinian Merchant is a smart management app for hotels and scenic spots. With AI assistant, event publishing, order management, and QR verification, it helps businesses operate efficiently.';
@override
String get officialWebsite => 'Official Website';
@@ -842,4 +842,70 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get allRightsReserved => 'All Rights Reserved';
+
+ @override
+ String get acceptOrder => 'Accept';
+
+ @override
+ String get transferOrder => 'Transfer';
+
+ @override
+ String get completeOrder => 'Complete';
+
+ @override
+ String get selectTransferDept => 'Select Department';
+
+ @override
+ String get acceptSuccess => 'Order accepted';
+
+ @override
+ String get acceptFailed => 'Failed to accept, please retry';
+
+ @override
+ String get transferSuccess => 'Order transferred';
+
+ @override
+ String get transferFailed => 'Failed to transfer, please retry';
+
+ @override
+ String get completeSuccess => 'Order completed';
+
+ @override
+ String get completeFailed => 'Operation failed, please retry';
+
+ @override
+ String get deptMaintenance => 'Maintenance';
+
+ @override
+ String get deptCleaning => 'Cleaning';
+
+ @override
+ String get deptFrontDesk => 'Front Desk';
+
+ @override
+ String get deptSecurity => 'Security';
+
+ @override
+ String get deptAdmin => 'Administration';
+
+ @override
+ String get deptKitchen => 'Kitchen';
+
+ @override
+ String get transferDept => 'Transfer Dept';
+
+ @override
+ String get voiceListening => 'Listening...';
+
+ @override
+ String get voiceUnavailable => 'Speech recognition unavailable';
+
+ @override
+ String get voicePermissionDenied => 'Microphone permission denied';
+
+ @override
+ String get voiceError => 'Speech recognition error';
+
+ @override
+ String get voiceModelLoading => 'Loading speech model, please wait...';
}
diff --git a/lib/l10n/app_localizations_th.dart b/lib/l10n/app_localizations_th.dart
index 23b6c84..a5c9b55 100644
--- a/lib/l10n/app_localizations_th.dart
+++ b/lib/l10n/app_localizations_th.dart
@@ -9,7 +9,7 @@ class AppLocalizationsTh extends AppLocalizations {
AppLocalizationsTh([String locale = 'th']) : super(locale);
@override
- String get appTitle => 'จื้อเหนียน จัดการ';
+ String get appTitle => 'จื้อเหนียน ผู้ขาย';
@override
String get appSubtitle => 'ระบบจัดการโรงแรมและสถานที่ท่องเที่ยวอัจฉริยะ';
@@ -222,7 +222,7 @@ class AppLocalizationsTh extends AppLocalizations {
String get creator => 'ผู้สร้าง';
@override
- String get assignee => 'ผู้รับมอบหมาย';
+ String get assignee => 'แผนกที่รับงาน';
@override
String get notAssigned => 'ยังไม่ได้มอบหมาย';
@@ -408,10 +408,10 @@ class AppLocalizationsTh extends AppLocalizations {
String get reportDesc => 'ดูการวิเคราะห์การดำเนินงาน';
@override
- String get appMarket => 'ตลาดแอป';
+ String get appMarket => 'ปลั๊กอินแอป';
@override
- String get marketDesc => 'ขยายโมดูลฟีเจอร์เพิ่มเติม';
+ String get marketDesc => 'ปลั๊กอินส่วนขยายธุรกิจเพิ่มเติม';
@override
String get helpCenter => 'ศูนย์ช่วยเหลือ';
@@ -711,10 +711,10 @@ class AppLocalizationsTh extends AppLocalizations {
String get latestVersion => 'เวอร์ชันล่าสุด';
@override
- String get agreementTitle => 'ข้อตกลงผู้ใช้ จื้อเหนียน จัดการ';
+ String get agreementTitle => 'ข้อตกลงผู้ใช้ จื้อเหนียน ผู้ขาย';
@override
- String get privacyTitle => 'นโยบายความเป็นส่วนตัว จื้อเหนียน จัดการ';
+ String get privacyTitle => 'นโยบายความเป็นส่วนตัว จื้อเหนียน ผู้ขาย';
@override
String get lastUpdated => 'อัปเดตล่าสุด: ธันวาคม 2024';
@@ -724,7 +724,7 @@ class AppLocalizationsTh extends AppLocalizations {
@override
String get agreementPara1 =>
- 'ข้อตกลงนี้เป็นข้อตกลงระหว่างคุณกับ จื้อเหนียน เทค เกี่ยวกับการใช้บริการ จื้อเหนียน จัดการ บริการรวมถึงแต่ไม่จำกัดเพียง การเผยแพร่เหตุการณ์ การจัดการคำสั่งซื้อ การประมวลผลใบงาน การตรวจสอบ QR ฯลฯ';
+ 'ข้อตกลงนี้เป็นข้อตกลงระหว่างคุณกับ จื้อเหนียน เทค เกี่ยวกับการใช้บริการ จื้อเหนียน ผู้ขาย บริการรวมถึงแต่ไม่จำกัดเพียง การเผยแพร่เหตุการณ์ การจัดการคำสั่งซื้อ การประมวลผลใบงาน การตรวจสอบ QR ฯลฯ';
@override
String get agreementSection2 => '2. การลงทะเบียนบัญชี';
@@ -822,7 +822,7 @@ class AppLocalizationsTh extends AppLocalizations {
@override
String get productDesc =>
- 'จื้อเหนียน จัดการเป็นแอปจัดการอัจฉริยะสำหรับโรงแรมและสถานที่ท่องเที่ยว ด้วยผู้ช่วย AI การเผยแพร่เหตุการณ์ การจัดการคำสั่งซื้อ และการตรวจสอบ QR ช่วยให้ธุรกิจดำเนินงานได้อย่างมีประสิทธิภาพ';
+ 'จื้อเหนียน ผู้ขายเป็นแอปจัดการอัจฉริยะสำหรับโรงแรมและสถานที่ท่องเที่ยว ด้วยผู้ช่วย AI การเผยแพร่เหตุการณ์ การจัดการคำสั่งซื้อ และการตรวจสอบ QR ช่วยให้ธุรกิจดำเนินงานได้อย่างมีประสิทธิภาพ';
@override
String get officialWebsite => 'เว็บไซต์ทางการ';
@@ -841,4 +841,70 @@ class AppLocalizationsTh extends AppLocalizations {
@override
String get allRightsReserved => 'สงวนลิขสิทธิ์ทั้งหมด';
+
+ @override
+ String get acceptOrder => 'รับงาน';
+
+ @override
+ String get transferOrder => 'โอนงาน';
+
+ @override
+ String get completeOrder => 'เสร็จสิ้นงาน';
+
+ @override
+ String get selectTransferDept => 'เลือกแผนกโอนงาน';
+
+ @override
+ String get acceptSuccess => 'รับงานสำเร็จ';
+
+ @override
+ String get acceptFailed => 'รับงานล้มเหลว โปรดลองอีกครั้ง';
+
+ @override
+ String get transferSuccess => 'โอนงานสำเร็จ';
+
+ @override
+ String get transferFailed => 'โอนงานล้มเหลว โปรดลองอีกครั้ง';
+
+ @override
+ String get completeSuccess => 'งานเสร็จสิ้น';
+
+ @override
+ String get completeFailed => 'การดำเนินการล้มเหลว โปรดลองอีกครั้ง';
+
+ @override
+ String get deptMaintenance => 'ฝ่ายซ่อมบำรุง';
+
+ @override
+ String get deptCleaning => 'ฝ่ายทำความสะอาด';
+
+ @override
+ String get deptFrontDesk => 'ฝ่ายต้อนรับ';
+
+ @override
+ String get deptSecurity => 'ฝ่ายรักษาความปลอดภัย';
+
+ @override
+ String get deptAdmin => 'ฝ่ายธุรการ';
+
+ @override
+ String get deptKitchen => 'ฝ่ายครัว';
+
+ @override
+ String get transferDept => 'แผนกโอนงาน';
+
+ @override
+ String get voiceListening => 'กำลังฟัง...';
+
+ @override
+ String get voiceUnavailable => 'ไม่รองรับการรู้จำเสียง';
+
+ @override
+ String get voicePermissionDenied => 'ถูกปฏิเสธสิทธิ์ไมโครโฟน';
+
+ @override
+ String get voiceError => 'เกิดข้อผิดพลาดในการรู้จำเสียง';
+
+ @override
+ String get voiceModelLoading => 'กำลังโหลดโมเดลเสียง โปรดรอ...';
}
diff --git a/lib/l10n/app_localizations_zh.dart b/lib/l10n/app_localizations_zh.dart
index 6d777ba..d9051de 100644
--- a/lib/l10n/app_localizations_zh.dart
+++ b/lib/l10n/app_localizations_zh.dart
@@ -9,7 +9,7 @@ class AppLocalizationsZh extends AppLocalizations {
AppLocalizationsZh([String locale = 'zh']) : super(locale);
@override
- String get appTitle => '智念管理';
+ String get appTitle => '智念商家端';
@override
String get appSubtitle => '酒店景区智能管理平台';
@@ -177,7 +177,7 @@ class AppLocalizationsZh extends AppLocalizations {
String get all => '全部';
@override
- String get pending => '待处理';
+ String get pending => '待接单';
@override
String get processing => '处理中';
@@ -222,7 +222,7 @@ class AppLocalizationsZh extends AppLocalizations {
String get creator => '创建人';
@override
- String get assignee => '指派给';
+ String get assignee => '接单部门';
@override
String get notAssigned => '未指派';
@@ -408,10 +408,10 @@ class AppLocalizationsZh extends AppLocalizations {
String get reportDesc => '查看运营数据分析';
@override
- String get appMarket => '应用市场';
+ String get appMarket => '应用插件';
@override
- String get marketDesc => '扩展更多功能模块';
+ String get marketDesc => '更多业务扩展插件';
@override
String get helpCenter => '帮助中心';
@@ -560,7 +560,7 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get faq3A =>
- '工单共有三种状态:待处理(刚创建未分配)、处理中(已分配给相关人员)、已完成(问题已解决)。可以在「订单工单」页面的工单Tab中按状态筛选。';
+ '工单共有三种状态:待接单(刚创建未分配)、处理中(已分配给相关人员)、已完成(问题已解决)。可以在「订单工单」页面的工单Tab中按状态筛选。';
@override
String get faq4Q => '老板和员工角色有什么区别?';
@@ -708,10 +708,10 @@ class AppLocalizationsZh extends AppLocalizations {
String get latestVersion => '最新版本';
@override
- String get agreementTitle => '智念管理用户协议';
+ String get agreementTitle => '智念商家端用户协议';
@override
- String get privacyTitle => '智念管理隐私政策';
+ String get privacyTitle => '智念商家端隐私政策';
@override
String get lastUpdated => '最后更新日期:2024年12月';
@@ -721,7 +721,7 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get agreementPara1 =>
- '本协议是您与智念科技之间关于使用智念管理服务所订立的协议。智念管理服务包括但不限于事件发布、订单管理、工单处理、扫码核销等功能。';
+ '本协议是您与智念科技之间关于使用智念商家端服务所订立的协议。智念商家端服务包括但不限于事件发布、订单管理、工单处理、扫码核销等功能。';
@override
String get agreementSection2 => '二、账号注册';
@@ -815,7 +815,7 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get productDesc =>
- '智念管理是一款专为酒店、景区等文旅行业打造的智能管理应用。通过AI助手、事件发布、订单工单管理、扫码核销等功能,帮助商家高效运营、提升服务质量。';
+ '智念商家端是一款专为酒店、景区等文旅行业打造的智能管理应用。通过AI助手、事件发布、订单工单管理、扫码核销等功能,帮助商家高效运营、提升服务质量。';
@override
String get officialWebsite => '官方网站';
@@ -834,4 +834,70 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get allRightsReserved => 'All Rights Reserved';
+
+ @override
+ String get acceptOrder => '接单';
+
+ @override
+ String get transferOrder => '转单';
+
+ @override
+ String get completeOrder => '完成工单';
+
+ @override
+ String get selectTransferDept => '选择转单部门';
+
+ @override
+ String get acceptSuccess => '接单成功';
+
+ @override
+ String get acceptFailed => '接单失败,请重试';
+
+ @override
+ String get transferSuccess => '转单成功';
+
+ @override
+ String get transferFailed => '转单失败,请重试';
+
+ @override
+ String get completeSuccess => '工单已完成';
+
+ @override
+ String get completeFailed => '操作失败,请重试';
+
+ @override
+ String get deptMaintenance => '维修部';
+
+ @override
+ String get deptCleaning => '保洁部';
+
+ @override
+ String get deptFrontDesk => '前台部';
+
+ @override
+ String get deptSecurity => '安保部';
+
+ @override
+ String get deptAdmin => '行政部';
+
+ @override
+ String get deptKitchen => '厨房';
+
+ @override
+ String get transferDept => '转单部门';
+
+ @override
+ String get voiceListening => '正在聆听...';
+
+ @override
+ String get voiceUnavailable => '当前设备不支持语音识别';
+
+ @override
+ String get voicePermissionDenied => '麦克风权限被拒绝';
+
+ @override
+ String get voiceError => '语音识别出错';
+
+ @override
+ String get voiceModelLoading => '正在加载语音模型,请稍候...';
}
diff --git a/lib/l10n/app_th.arb b/lib/l10n/app_th.arb
index 71a702d..dfd498b 100644
--- a/lib/l10n/app_th.arb
+++ b/lib/l10n/app_th.arb
@@ -1,6 +1,6 @@
{
"@@locale": "th",
- "appTitle": "จื้อเหนียน จัดการ",
+ "appTitle": "จื้อเหนียน ผู้ขาย",
"appSubtitle": "ระบบจัดการโรงแรมและสถานที่ท่องเที่ยวอัจฉริยะ",
"welcomeLogin": "ยินดีต้อนรับ",
"enterAccountInfo": "กรุณากรอกข้อมูลบัญชีของคุณ",
@@ -71,7 +71,7 @@
"unknownLocation": "ไม่ทราบตำแหน่ง",
"workOrderId": "รหัสใบงาน",
"creator": "ผู้สร้าง",
- "assignee": "ผู้รับมอบหมาย",
+ "assignee": "แผนกที่รับงาน",
"notAssigned": "ยังไม่ได้มอบหมาย",
"category": "หมวดหมู่",
"priority": "ลำดับความสำคัญ",
@@ -129,8 +129,8 @@
"employeeDesc": "เพิ่มและจัดการบัญชีพนักงาน",
"dataReport": "รายงานข้อมูล",
"reportDesc": "ดูการวิเคราะห์การดำเนินงาน",
- "appMarket": "ตลาดแอป",
- "marketDesc": "ขยายโมดูลฟีเจอร์เพิ่มเติม",
+ "appMarket": "ปลั๊กอินแอป",
+ "marketDesc": "ปลั๊กอินส่วนขยายธุรกิจเพิ่มเติม",
"helpCenter": "ศูนย์ช่วยเหลือ",
"helpDesc": "คู่มือใช้งานและคำถามที่พบบ่อย",
"aboutUs": "เกี่ยวกับเรา",
@@ -193,7 +193,7 @@
"contactTeam": "ติดต่อทีมสนับสนุนของเราเพื่อขอความช่วยเหลือเพิ่มเติม",
"contactService": "ติดต่อฝ่ายสนับสนุน",
"productIntro": "แนะนำผลิตภัณฑ์",
- "productDesc": "จื้อเหนียน จัดการเป็นแอปจัดการอัจฉริยะสำหรับโรงแรมและสถานที่ท่องเที่ยว ด้วยผู้ช่วย AI การเผยแพร่เหตุการณ์ การจัดการคำสั่งซื้อ และการตรวจสอบ QR ช่วยให้ธุรกิจดำเนินงานได้อย่างมีประสิทธิภาพ",
+ "productDesc": "จื้อเหนียน ผู้ขายเป็นแอปจัดการอัจฉริยะสำหรับโรงแรมและสถานที่ท่องเที่ยว ด้วยผู้ช่วย AI การเผยแพร่เหตุการณ์ การจัดการคำสั่งซื้อ และการตรวจสอบ QR ช่วยให้ธุรกิจดำเนินงานได้อย่างมีประสิทธิภาพ",
"officialWebsite": "เว็บไซต์ทางการ",
"servicePhone": "โทรบริการ",
"techSupport": "ฝ่ายสนับสนุนทางเทคนิค",
@@ -238,11 +238,11 @@
"spaPackage": "แพ็คเกจสปา",
"orderUnit": " รายการ",
"latestVersion": "เวอร์ชันล่าสุด",
- "agreementTitle": "ข้อตกลงผู้ใช้ จื้อเหนียน จัดการ",
- "privacyTitle": "นโยบายความเป็นส่วนตัว จื้อเหนียน จัดการ",
+ "agreementTitle": "ข้อตกลงผู้ใช้ จื้อเหนียน ผู้ขาย",
+ "privacyTitle": "นโยบายความเป็นส่วนตัว จื้อเหนียน ผู้ขาย",
"lastUpdated": "อัปเดตล่าสุด: ธันวาคม 2024",
"agreementSection1": "1. ขอบเขตข้อตกลง",
- "agreementPara1": "ข้อตกลงนี้เป็นข้อตกลงระหว่างคุณกับ จื้อเหนียน เทค เกี่ยวกับการใช้บริการ จื้อเหนียน จัดการ บริการรวมถึงแต่ไม่จำกัดเพียง การเผยแพร่เหตุการณ์ การจัดการคำสั่งซื้อ การประมวลผลใบงาน การตรวจสอบ QR ฯลฯ",
+ "agreementPara1": "ข้อตกลงนี้เป็นข้อตกลงระหว่างคุณกับ จื้อเหนียน เทค เกี่ยวกับการใช้บริการ จื้อเหนียน ผู้ขาย บริการรวมถึงแต่ไม่จำกัดเพียง การเผยแพร่เหตุการณ์ การจัดการคำสั่งซื้อ การประมวลผลใบงาน การตรวจสอบ QR ฯลฯ",
"agreementSection2": "2. การลงทะเบียนบัญชี",
"agreementPara2": "คุณต้องลงทะเบียนบัญชีเพื่อใช้บริการของเรา กรุณากรอกหมายเลขโทรศัพท์ที่ถูกต้องและตั้งรหัสผ่านที่ปลอดภัย คุณรับผิดชอบต่อการกระทำทั้งหมดภายใต้บัญชีของคุณ",
"agreementSection3": "3. กฎการใช้บริการ",
@@ -268,5 +268,28 @@
"privacySection6": "6. Cookies และการจัดเก็บข้อมูลในเครื่อง",
"privacyPara6": "เราใช้การจัดเก็บข้อมูลในเครื่องเพื่อบันทึกสถานะการเข้าสู่ระบบและการตั้งค่าแอป เพื่อประสบการณ์ที่ดีขึ้น คุณสามารถล้างข้อมูลเหล่านี้ได้ในการตั้งค่า",
"privacySection7": "7. การอัปเดตนโยบายความเป็นส่วนตัว",
- "privacyPara7": "เราอาจอัปเดตนโยบายความเป็นส่วนตัวเป็นครั้งคราว การอัปเดตจะแจ้งในแอป และการใช้งานต่อถือว่ายอมรับ"
+ "privacyPara7": "เราอาจอัปเดตนโยบายความเป็นส่วนตัวเป็นครั้งคราว การอัปเดตจะแจ้งในแอป และการใช้งานต่อถือว่ายอมรับ",
+
+ "acceptOrder": "รับงาน",
+ "transferOrder": "โอนงาน",
+ "completeOrder": "เสร็จสิ้นงาน",
+ "selectTransferDept": "เลือกแผนกโอนงาน",
+ "acceptSuccess": "รับงานสำเร็จ",
+ "acceptFailed": "รับงานล้มเหลว โปรดลองอีกครั้ง",
+ "transferSuccess": "โอนงานสำเร็จ",
+ "transferFailed": "โอนงานล้มเหลว โปรดลองอีกครั้ง",
+ "completeSuccess": "งานเสร็จสิ้น",
+ "completeFailed": "การดำเนินการล้มเหลว โปรดลองอีกครั้ง",
+ "deptMaintenance": "ฝ่ายซ่อมบำรุง",
+ "deptCleaning": "ฝ่ายทำความสะอาด",
+ "deptFrontDesk": "ฝ่ายต้อนรับ",
+ "deptSecurity": "ฝ่ายรักษาความปลอดภัย",
+ "deptAdmin": "ฝ่ายธุรการ",
+ "deptKitchen": "ฝ่ายครัว",
+ "transferDept": "แผนกโอนงาน",
+ "voiceListening": "กำลังฟัง...",
+ "voiceUnavailable": "ไม่รองรับการรู้จำเสียง",
+ "voicePermissionDenied": "ถูกปฏิเสธสิทธิ์ไมโครโฟน",
+ "voiceError": "เกิดข้อผิดพลาดในการรู้จำเสียง",
+ "voiceModelLoading": "กำลังโหลดโมเดลเสียง โปรดรอ..."
}
\ No newline at end of file
diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb
index 5e7e961..e6c75f0 100644
--- a/lib/l10n/app_zh.arb
+++ b/lib/l10n/app_zh.arb
@@ -1,6 +1,6 @@
{
"@@locale": "zh",
- "appTitle": "智念管理",
+ "appTitle": "智念商家端",
"appSubtitle": "酒店景区智能管理平台",
"welcomeLogin": "欢迎登录",
"enterAccountInfo": "请输入您的账号信息",
@@ -59,7 +59,7 @@
"workOrder": "工单",
"order": "订单",
"all": "全部",
- "pending": "待处理",
+ "pending": "待接单",
"processing": "处理中",
"completed": "已完成",
"pendingPayment": "待支付",
@@ -75,7 +75,7 @@
"unknownLocation": "未知位置",
"workOrderId": "工单编号",
"creator": "创建人",
- "assignee": "指派给",
+ "assignee": "接单部门",
"notAssigned": "未指派",
"category": "分类",
"priority": "优先级",
@@ -140,8 +140,8 @@
"employeeDesc": "添加和管理员工账号",
"dataReport": "数据报表",
"reportDesc": "查看运营数据分析",
- "appMarket": "应用市场",
- "marketDesc": "扩展更多功能模块",
+ "appMarket": "应用插件",
+ "marketDesc": "更多业务扩展插件",
"helpCenter": "帮助中心",
"helpDesc": "使用指南与常见问题",
"aboutUs": "关于我们",
@@ -195,7 +195,7 @@
"faq2Q": "如何核销订单?",
"faq2A": "在首页快捷菜单中点击「核销」,使用手机摄像头扫描客户出示的二维码,识别成功后会跳转到订单详情页,点击底部「核销」按钮并确认即可完成。",
"faq3Q": "工单状态有哪些?",
- "faq3A": "工单共有三种状态:待处理(刚创建未分配)、处理中(已分配给相关人员)、已完成(问题已解决)。可以在「订单工单」页面的工单Tab中按状态筛选。",
+ "faq3A": "工单共有三种状态:待接单(刚创建未分配)、处理中(已分配给相关人员)、已完成(问题已解决)。可以在「订单工单」页面的工单Tab中按状态筛选。",
"faq4Q": "老板和员工角色有什么区别?",
"faq4A": "老板角色拥有完整的操作权限,包括员工管理、数据报表等管理功能;员工角色只能处理日常业务,如发布事件、处理工单、核销订单等。",
"faq5Q": "如何切换主题和语言?",
@@ -251,11 +251,11 @@
"latestVersion": "最新版本",
- "agreementTitle": "智念管理用户协议",
- "privacyTitle": "智念管理隐私政策",
+ "agreementTitle": "智念商家端用户协议",
+ "privacyTitle": "智念商家端隐私政策",
"lastUpdated": "最后更新日期:2024年12月",
"agreementSection1": "一、协议范围",
- "agreementPara1": "本协议是您与智念科技之间关于使用智念管理服务所订立的协议。智念管理服务包括但不限于事件发布、订单管理、工单处理、扫码核销等功能。",
+ "agreementPara1": "本协议是您与智念科技之间关于使用智念商家端服务所订立的协议。智念商家端服务包括但不限于事件发布、订单管理、工单处理、扫码核销等功能。",
"agreementSection2": "二、账号注册",
"agreementPara2": "您需要注册一个账号才能使用我们的服务。注册时需提供真实有效的手机号码,并设置安全密码。您应对账号下的所有行为负责。",
"agreementSection3": "三、服务使用规范",
@@ -284,11 +284,35 @@
"privacyPara7": "我们可能会不时更新本隐私政策。更新后的政策将在应用内提示,继续使用即视为接受更新。",
"productIntro": "产品简介",
- "productDesc": "智念管理是一款专为酒店、景区等文旅行业打造的智能管理应用。通过AI助手、事件发布、订单工单管理、扫码核销等功能,帮助商家高效运营、提升服务质量。",
+ "productDesc": "智念商家端是一款专为酒店、景区等文旅行业打造的智能管理应用。通过AI助手、事件发布、订单工单管理、扫码核销等功能,帮助商家高效运营、提升服务质量。",
"officialWebsite": "官方网站",
"servicePhone": "客服电话",
"techSupport": "技术支持",
"companyAddress": "公司地址",
"copyright": "Copyright 2024 智念科技",
- "allRightsReserved": "All Rights Reserved"
+ "allRightsReserved": "All Rights Reserved",
+
+ "acceptOrder": "接单",
+ "transferOrder": "转单",
+ "completeOrder": "完成工单",
+ "selectTransferDept": "选择转单部门",
+ "acceptSuccess": "接单成功",
+ "acceptFailed": "接单失败,请重试",
+ "transferSuccess": "转单成功",
+ "transferFailed": "转单失败,请重试",
+ "completeSuccess": "工单已完成",
+ "completeFailed": "操作失败,请重试",
+ "deptMaintenance": "维修部",
+ "deptCleaning": "保洁部",
+ "deptFrontDesk": "前台部",
+ "deptSecurity": "安保部",
+ "deptAdmin": "行政部",
+ "deptKitchen": "厨房",
+ "transferDept": "转单部门",
+
+ "voiceListening": "正在聆听...",
+ "voiceUnavailable": "当前设备不支持语音识别",
+ "voicePermissionDenied": "麦克风权限被拒绝",
+ "voiceError": "语音识别出错",
+ "voiceModelLoading": "正在加载语音模型,请稍候..."
}
diff --git a/lib/models/work_order.dart b/lib/models/work_order.dart
index c9a1b49..867b689 100644
--- a/lib/models/work_order.dart
+++ b/lib/models/work_order.dart
@@ -34,7 +34,7 @@ class WorkOrder {
String get statusText {
switch (status) {
case WorkOrderStatus.pending:
- return '待处理';
+ return '待接单';
case WorkOrderStatus.processing:
return '处理中';
case WorkOrderStatus.completed:
diff --git a/lib/pages/about_page.dart b/lib/pages/about_page.dart
index 6f027ea..6d03979 100644
--- a/lib/pages/about_page.dart
+++ b/lib/pages/about_page.dart
@@ -21,15 +21,15 @@ class AboutPage extends StatelessWidget {
width: 100,
height: 100,
decoration: BoxDecoration(
- gradient: AppGradients.primary,
borderRadius: BorderRadius.circular(24),
),
- child: const Icon(Icons.auto_awesome, color: Colors.white, size: 48),
+ clipBehavior: Clip.antiAlias,
+ child: Image.asset('assets/logo.png', fit: BoxFit.cover),
),
const SizedBox(height: 20),
Text(
l10n.appTitle,
- style: const TextStyle(
+ style: TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
color: AppColors.textPrimary,
@@ -38,7 +38,7 @@ class AboutPage extends StatelessWidget {
const SizedBox(height: 4),
Text(
'${l10n.version} 1.0.0',
- style: const TextStyle(fontSize: 14, color: AppColors.textSecondary),
+ style: TextStyle(fontSize: 14, color: AppColors.textSecondary),
),
const SizedBox(height: 8),
Container(
@@ -68,7 +68,7 @@ class AboutPage extends StatelessWidget {
children: [
Text(
l10n.productIntro,
- style: const TextStyle(
+ style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
color: AppColors.textPrimary,
@@ -77,7 +77,7 @@ class AboutPage extends StatelessWidget {
const SizedBox(height: 12),
Text(
l10n.productDesc,
- style: const TextStyle(
+ style: TextStyle(
fontSize: 14,
color: AppColors.textSecondary,
height: 1.7,
@@ -115,14 +115,14 @@ class AboutPage extends StatelessWidget {
ListTile(
leading: const Icon(Icons.description_outlined, color: AppColors.primary),
title: Text(l10n.userAgreement),
- trailing: const Icon(Icons.chevron_right, color: AppColors.textTertiary),
+ trailing: Icon(Icons.chevron_right, color: AppColors.textTertiary),
onTap: () => context.push('/settings/policy?type=agreement'),
),
const Divider(height: 1, indent: 72),
ListTile(
leading: const Icon(Icons.privacy_tip_outlined, color: AppColors.primary),
title: Text(l10n.privacyPolicy),
- trailing: const Icon(Icons.chevron_right, color: AppColors.textTertiary),
+ trailing: Icon(Icons.chevron_right, color: AppColors.textTertiary),
onTap: () => context.push('/settings/policy?type=privacy'),
),
],
@@ -131,12 +131,12 @@ class AboutPage extends StatelessWidget {
const SizedBox(height: 32),
Text(
l10n.copyright,
- style: const TextStyle(fontSize: 12, color: AppColors.textTertiary),
+ style: TextStyle(fontSize: 12, color: AppColors.textTertiary),
),
const SizedBox(height: 8),
Text(
l10n.allRightsReserved,
- style: const TextStyle(fontSize: 12, color: AppColors.textTertiary),
+ style: TextStyle(fontSize: 12, color: AppColors.textTertiary),
),
],
),
@@ -151,12 +151,12 @@ class AboutPage extends StatelessWidget {
children: [
Text(
label,
- style: const TextStyle(fontSize: 14, color: AppColors.textSecondary),
+ style: TextStyle(fontSize: 14, color: AppColors.textSecondary),
),
const Spacer(),
Text(
value,
- style: const TextStyle(
+ style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w500,
color: AppColors.textPrimary,
diff --git a/lib/pages/app_market_page.dart b/lib/pages/app_market_page.dart
index 5912f41..7c925cd 100644
--- a/lib/pages/app_market_page.dart
+++ b/lib/pages/app_market_page.dart
@@ -1,204 +1,142 @@
import 'package:flutter/material.dart';
+import 'package:flutter_animate/flutter_animate.dart';
import '../theme.dart';
import '../l10n/app_localizations.dart';
-class AppMarketPage extends StatefulWidget {
+class AppMarketPage extends StatelessWidget {
const AppMarketPage({super.key});
- @override
- State createState() => _AppMarketPageState();
-}
-
-class _AppMarketPageState extends State {
- final List