diff --git a/ios/Podfile b/ios/Podfile index cb86c29..62923c5 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '18.2' +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index aee4cbf..3864ef0 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -61,10 +61,13 @@ PODS: - Flutter - flutter_native_splash (2.4.3): - Flutter - - flutter_secure_storage (6.0.0): + - flutter_secure_storage_darwin (10.0.0): - Flutter - - fluttertoast (0.0.2): + - FlutterMacOS + - fvp (0.31.2): - Flutter + - FlutterMacOS + - mdk (~> 0.32.0) - gal (1.0.0): - Flutter - FlutterMacOS @@ -93,8 +96,7 @@ PODS: - Mantle (2.2.0): - Mantle/extobjc (= 2.2.0) - Mantle/extobjc (2.2.0) - - media_kit_video (0.0.1): - - Flutter + - mdk (0.32.0) - mobile_scanner (7.0.0): - Flutter - FlutterMacOS @@ -156,8 +158,6 @@ PODS: - video_player_avfoundation (0.0.1): - Flutter - FlutterMacOS - - volume_controller (0.0.1): - - Flutter - wakelock_plus (0.0.1): - Flutter @@ -173,14 +173,13 @@ DEPENDENCIES: - flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`) - flutter_keyboard_visibility_temp_fork (from `.symlinks/plugins/flutter_keyboard_visibility_temp_fork/ios`) - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) - - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) + - flutter_secure_storage_darwin (from `.symlinks/plugins/flutter_secure_storage_darwin/darwin`) + - fvp (from `.symlinks/plugins/fvp/darwin`) - gal (from `.symlinks/plugins/gal/darwin`) - geolocator_apple (from `.symlinks/plugins/geolocator_apple/darwin`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - isar_flutter_libs (from `.symlinks/plugins/isar_flutter_libs/ios`) - local_auth_darwin (from `.symlinks/plugins/local_auth_darwin/darwin`) - - media_kit_video (from `.symlinks/plugins/media_kit_video/ios`) - mobile_scanner (from `.symlinks/plugins/mobile_scanner/darwin`) - moodiary_rust (from `.symlinks/plugins/moodiary_rust/ios`) - network_info_plus (from `.symlinks/plugins/network_info_plus/ios`) @@ -195,7 +194,6 @@ DEPENDENCIES: - tflite_flutter (from `.symlinks/plugins/tflite_flutter/ios`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) - - volume_controller (from `.symlinks/plugins/volume_controller/ios`) - wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`) SPEC REPOS: @@ -204,6 +202,7 @@ SPEC REPOS: - DKPhotoGallery - libwebp - Mantle + - mdk - OrderedSet - SDWebImage - SDWebImageWebPCoder @@ -234,10 +233,10 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/flutter_keyboard_visibility_temp_fork/ios" flutter_native_splash: :path: ".symlinks/plugins/flutter_native_splash/ios" - flutter_secure_storage: - :path: ".symlinks/plugins/flutter_secure_storage/ios" - fluttertoast: - :path: ".symlinks/plugins/fluttertoast/ios" + flutter_secure_storage_darwin: + :path: ".symlinks/plugins/flutter_secure_storage_darwin/darwin" + fvp: + :path: ".symlinks/plugins/fvp/darwin" gal: :path: ".symlinks/plugins/gal/darwin" geolocator_apple: @@ -248,8 +247,6 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/isar_flutter_libs/ios" local_auth_darwin: :path: ".symlinks/plugins/local_auth_darwin/darwin" - media_kit_video: - :path: ".symlinks/plugins/media_kit_video/ios" mobile_scanner: :path: ".symlinks/plugins/mobile_scanner/darwin" moodiary_rust: @@ -278,8 +275,6 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/url_launcher_ios/ios" video_player_avfoundation: :path: ".symlinks/plugins/video_player_avfoundation/darwin" - volume_controller: - :path: ".symlinks/plugins/volume_controller/ios" wakelock_plus: :path: ".symlinks/plugins/wakelock_plus/ios" @@ -297,8 +292,8 @@ SPEC CHECKSUMS: flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99 flutter_keyboard_visibility_temp_fork: 95b2d534bacf6ac62e7fcbe5c2a9e2c2a17ce06f flutter_native_splash: c32d145d68aeda5502d5f543ee38c192065986cf - flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13 - fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1 + flutter_secure_storage_darwin: ce237a8775b39723566dc72571190a3769d70468 + fvp: 89275776efede62b7fde1762afa518974e6d6750 gal: baecd024ebfd13c441269ca7404792a7152fde89 geolocator_apple: ab36aa0e8b7d7a2d7639b3b4e48308394e8cef5e image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a @@ -306,7 +301,7 @@ SPEC CHECKSUMS: libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009 local_auth_darwin: 553ce4f9b16d3fdfeafce9cf042e7c9f77c1c391 Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d - media_kit_video: f3b0d035d89def15cfbbcf7dc2ae278f201e2f83 + mdk: a726c85fd49c002b83d586b278d452f387750889 mobile_scanner: 9157936403f5a0644ca3779a38ff8404c5434a93 moodiary_rust: e75b3fb63e53d3ba5cfed0edf0b6df5f98c4c5f1 network_info_plus: cf61925ab5205dce05a4f0895989afdb6aade5fc @@ -327,9 +322,8 @@ SPEC CHECKSUMS: tflite_flutter: 64b192e11352fe36943ab6656e1d49207f1a5595 url_launcher_ios: 694010445543906933d732453a59da0a173ae33d video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b - volume_controller: 3657a1f65bedb98fa41ff7dc5793537919f31b12 - wakelock_plus: 04623e3f525556020ebd4034310f20fe7fda8b49 + wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556 -PODFILE CHECKSUM: 9752b5340b4d3f9618318fcd530d907790e2a9f5 +PODFILE CHECKSUM: ed22e19af5eb4a72710862041c4be54584bcf797 COCOAPODS: 1.16.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index d573612..f0e3215 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 10D3882531AED19DB670FEB7 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2698D5B078302CF0E4E6EE6 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 306627225710E691EF0E0A35 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A1A8341695BDC0741989253 /* Pods_Runner.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 */; }; - 7F6D40933C7341CBD11FBDD8 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51E3DDEC08B33FD4E6BEE95D /* Pods_RunnerTests.framework */; }; 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 */; }; + FE9916AC13415D97E045D776 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E85B5AB729F0B2360835644 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,31 +42,31 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 132767BCEC59ECA2C27AAF55 /* 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 = ""; }; - 2A1A8341695BDC0741989253 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 18106D637ED786D29FE68004 /* 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 = ""; }; 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 = ""; }; - 51E3DDEC08B33FD4E6BEE95D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 481FF39ABA9170A968D00D47 /* 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 = ""; }; 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 = ""; }; - 7D210E37B46E2650FA945AB1 /* 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 = ""; }; + 8E85B5AB729F0B2360835644 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9F8B7E7E836FBA71F1E2767D /* 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 = ""; }; A910B4CF2D4C960600C998E7 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/Main.storyboard; sourceTree = ""; }; A910B4D02D4C960600C998E7 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/LaunchScreen.storyboard; sourceTree = ""; }; A910B4D12D4C961C00C998E7 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = "zh-Hans"; path = "zh-Hans.lproj/Main.storyboard"; sourceTree = ""; }; A910B4D22D4C961C00C998E7 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = "zh-Hans"; path = "zh-Hans.lproj/LaunchScreen.storyboard"; sourceTree = ""; }; - D3787A842552CCA621630495 /* 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 = ""; }; - D73569CF22DB2A16EAE0220D /* 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 = ""; }; - E231F0C855BB3DD103DA44E9 /* 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 = ""; }; - E7AEAE59248BEA6C8378B114 /* 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 = ""; }; - E913EDBE59656A0E8EB14DDA /* 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 = ""; }; + D0CBE1B7A5C3D8E84DECC981 /* 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 = ""; }; + F2698D5B078302CF0E4E6EE6 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FD54B3E6C9A9278793818CA8 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -74,7 +74,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 306627225710E691EF0E0A35 /* Pods_Runner.framework in Frameworks */, + FE9916AC13415D97E045D776 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -82,22 +82,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7F6D40933C7341CBD11FBDD8 /* Pods_RunnerTests.framework in Frameworks */, + 10D3882531AED19DB670FEB7 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 32F89EBD1A567B14B95A803E /* Frameworks */ = { - isa = PBXGroup; - children = ( - 2A1A8341695BDC0741989253 /* Pods_Runner.framework */, - 51E3DDEC08B33FD4E6BEE95D /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -109,12 +100,12 @@ 4358F1D645E2BE879D24A551 /* Pods */ = { isa = PBXGroup; children = ( - D3787A842552CCA621630495 /* Pods-Runner.debug.xcconfig */, - E913EDBE59656A0E8EB14DDA /* Pods-Runner.release.xcconfig */, - 7D210E37B46E2650FA945AB1 /* Pods-Runner.profile.xcconfig */, - D73569CF22DB2A16EAE0220D /* Pods-RunnerTests.debug.xcconfig */, - E7AEAE59248BEA6C8378B114 /* Pods-RunnerTests.release.xcconfig */, - E231F0C855BB3DD103DA44E9 /* Pods-RunnerTests.profile.xcconfig */, + D0CBE1B7A5C3D8E84DECC981 /* Pods-Runner.debug.xcconfig */, + FD54B3E6C9A9278793818CA8 /* Pods-Runner.release.xcconfig */, + 132767BCEC59ECA2C27AAF55 /* Pods-Runner.profile.xcconfig */, + 9F8B7E7E836FBA71F1E2767D /* Pods-RunnerTests.debug.xcconfig */, + 18106D637ED786D29FE68004 /* Pods-RunnerTests.release.xcconfig */, + 481FF39ABA9170A968D00D47 /* Pods-RunnerTests.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -138,7 +129,7 @@ 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, 4358F1D645E2BE879D24A551 /* Pods */, - 32F89EBD1A567B14B95A803E /* Frameworks */, + B0AE19443A2FC97A6908AB80 /* Frameworks */, ); sourceTree = ""; }; @@ -166,6 +157,15 @@ path = Runner; sourceTree = ""; }; + B0AE19443A2FC97A6908AB80 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8E85B5AB729F0B2360835644 /* Pods_Runner.framework */, + F2698D5B078302CF0E4E6EE6 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -173,7 +173,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 802002D8FFADD5D24C50A9FA /* [CP] Check Pods Manifest.lock */, + 1C96070FD74708494C91C45C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, CE18F12EDBB0BF2FD5BF0F0E /* Frameworks */, @@ -192,15 +192,15 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 3190980419AFCAD7AC11C68D /* [CP] Check Pods Manifest.lock */, + 6FA29CD45882489C42CB69A1 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - DDBAC86E6B3F372170C284A0 /* [CP] Embed Pods Frameworks */, - B482CF705AC6985E445540F2 /* [CP] Copy Pods Resources */, 523FF08A9B798D86BA8B9DD9 /* Frameworks */, + 24F448645ED8BCE73BE4BB9F /* [CP] Embed Pods Frameworks */, + E28A122442FA326B99260C5B /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -272,45 +272,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3190980419AFCAD7AC11C68D /* [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"; - }; - 802002D8FFADD5D24C50A9FA /* [CP] Check Pods Manifest.lock */ = { + 1C96070FD74708494C91C45C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -332,6 +294,61 @@ 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; }; + 24F448645ED8BCE73BE4BB9F /* [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; + }; + 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"; + }; + 6FA29CD45882489C42CB69A1 /* [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; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -347,7 +364,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - B482CF705AC6985E445540F2 /* [CP] Copy Pods Resources */ = { + E28A122442FA326B99260C5B /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -364,23 +381,6 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; showEnvVarsInLog = 0; }; - DDBAC86E6B3F372170C284A0 /* [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; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -472,6 +472,7 @@ ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = s; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -500,10 +501,10 @@ DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 3XA29H789G; ENABLE_BITCODE = NO; - FLUTTER_BUILD_MODE = debug; + FLUTTER_BUILD_MODE = release; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.lifestyle"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -512,15 +513,20 @@ PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "moodiary-ios"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Profile; }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D73569CF22DB2A16EAE0220D /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 9F8B7E7E836FBA71F1E2767D /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Manual; @@ -540,7 +546,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E7AEAE59248BEA6C8378B114 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 18106D637ED786D29FE68004 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Manual; @@ -558,7 +564,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E231F0C855BB3DD103DA44E9 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 481FF39ABA9170A968D00D47 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Manual; @@ -672,6 +678,8 @@ ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PREPROCESSOR_DEFINITIONS = "DISABLE_PUSH_NOTIFICATIONS=1"; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -681,7 +689,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; @@ -705,7 +713,7 @@ FLUTTER_BUILD_MODE = debug; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.lifestyle"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -714,9 +722,14 @@ PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "moodiary-ios"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -734,10 +747,10 @@ DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 3XA29H789G; ENABLE_BITCODE = NO; - FLUTTER_BUILD_MODE = debug; + FLUTTER_BUILD_MODE = release; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.lifestyle"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -746,8 +759,13 @@ PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "moodiary-ios"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 347aa19..dca146d 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -51,7 +51,7 @@ APPL CFBundleShortVersionString $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? CFBundleVersion $(FLUTTER_BUILD_NUMBER) + ITSAppUsesNonExemptEncryption + LSRequiresIPhoneOS + NSAppleMusicUsageDescription + 应用需要您的同意,才能访问媒体资料库 + NSBluetoothAlwaysUsageDescription + 应用需要您的同意,才能使用蓝牙 NSCameraUsageDescription - 使用你的摄像头拍摄媒体 + 应用需要您的同意,才能访问相机 + NSContactsUsageDescription + 应用需要您的同意,才能访问通讯录 NSFaceIDUsageDescription - 应用需要您的同意,才能获取人脸识别权限 + 应用需要您的同意,才能使用人脸识别 + NSLocationAlwaysAndWhenInUseUsageDescription + 应用需要您的同意,才能访问位置 NSLocationWhenInUseUsageDescription - 应用需要您的同意,才能访问位置信息,以便于获取位置 + 应用需要您的同意,才能访问位置 NSMicrophoneUsageDescription - 应用需要您的同意,才能使用麦克风,以便于语音录制 + 应用需要您的同意,才能使用麦克风 + NSMotionUsageDescription + 应用需要您的同意,才能访问运动与健身 NSPhotoLibraryAddUsageDescription - 访问你的媒体数据 + 应用需要您的同意,才能访问照片 NSPhotoLibraryUsageDescription - 访问你的照片 + 应用需要您的同意,才能访问照片 + NSSiriUsageDescription + 应用需要您的同意,才能访问Siri + NSSpeechRecognitionUsageDescription + 应用需要您的同意,才能访问语音识别 UIApplicationSupportsIndirectInputEvents UILaunchStoryboardName @@ -59,5 +73,7 @@ UIViewControllerBasedStatusBarAppearance + keychain-access-groups + diff --git a/lib/components/base/button.dart b/lib/components/base/button.dart index 254d3cf..b75f1d5 100644 --- a/lib/components/base/button.dart +++ b/lib/components/base/button.dart @@ -105,7 +105,9 @@ class MultiFabLayoutDelegate extends MultiChildLayoutDelegate { class PageBackButton extends StatelessWidget { final Function()? onBack; - const PageBackButton({super.key, this.onBack}); + final Color? color; + + const PageBackButton({super.key, this.onBack, this.color}); @override Widget build(BuildContext context) { @@ -113,7 +115,7 @@ class PageBackButton extends StatelessWidget { child: IconButton( onPressed: onBack ?? Get.back, icon: const Icon(Icons.arrow_back_rounded), - color: context.theme.colorScheme.onSurface, + color: color ?? context.theme.colorScheme.onSurface, tooltip: context.l10n.back, ), ); diff --git a/lib/components/media/media_video_view.dart b/lib/components/media/media_video_view.dart index ec778f1..6218901 100644 --- a/lib/components/media/media_video_view.dart +++ b/lib/components/media/media_video_view.dart @@ -69,19 +69,16 @@ class MediaVideoComponent extends StatelessWidget { imagePath: thumbnailList[index], heroTag: '$heroPrefix$index', onTap: () async { - await showVideoView( - context, - videoList, - index, - heroTagPrefix: '$heroPrefix$index', - ); + await showVideoView(context, videoList, index); }, size: 120, ), ), - const FrostedGlassButton( - size: 32, - child: Center(child: Icon(Icons.play_arrow_rounded)), + const IgnorePointer( + child: FrostedGlassButton( + size: 32, + child: Center(child: Icon(Icons.play_arrow_rounded)), + ), ), ], ); diff --git a/lib/main.dart b/lib/main.dart index d0f0276..fc3b098 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,6 +8,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_displaymode/flutter_displaymode.dart'; import 'package:flutter_quill/flutter_quill.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; +import 'package:fvp/fvp.dart' as fvp; import 'package:get/get.dart'; import 'package:intl/find_locale.dart'; import 'package:intl/intl.dart'; @@ -28,7 +29,6 @@ import 'package:moodiary/utils/log_util.dart'; import 'package:moodiary/utils/media_util.dart'; import 'package:moodiary/utils/theme_util.dart'; import 'package:moodiary/utils/webdav_util.dart'; -import 'package:video_player_media_kit/video_player_media_kit.dart'; Future _initSystem() async { WidgetsFlutterBinding.ensureInitialized(); @@ -38,7 +38,8 @@ Future _initSystem() async { unawaited(RustLib.init()); unawaited(_platFormOption()); WebDavUtil().initWebDav(); - VideoPlayerMediaKit.ensureInitialized(windows: true); + await ThemeUtil().buildTheme(); + fvp.registerWith(); SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); SystemChrome.setSystemUIOverlayStyle( const SystemUiOverlayStyle( @@ -46,7 +47,6 @@ Future _initSystem() async { systemNavigationBarContrastEnforced: false, ), ); - await ThemeUtil().buildTheme(); } Future _findLanguage() async { @@ -116,7 +116,7 @@ class Moodiary extends StatelessWidget { @override Widget build(BuildContext context) { - final themeData = ThemeUtil().getThemeData(); + final theme = ThemeUtil().getThemeData(); return GetMaterialApp.router( routeInformationParser: GetInformationParser.createInformationParser( initialRoute: _getInitialRoute(), @@ -150,8 +150,8 @@ class Moodiary extends StatelessWidget { ); return smartDialog(context, home); }, - theme: themeData.$1, - darkTheme: themeData.$2, + theme: theme.$1, + darkTheme: theme.$2, locale: locale, themeMode: ThemeMode.values[PrefUtil.getValue('themeMode')!], getPages: AppPages.routes, diff --git a/lib/pages/video/video_logic.dart b/lib/pages/video/video_logic.dart index 7fb3afd..ec1f297 100644 --- a/lib/pages/video/video_logic.dart +++ b/lib/pages/video/video_logic.dart @@ -1,45 +1,121 @@ +import 'dart:async'; +import 'dart:io'; + +import 'package:chewie/chewie.dart'; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:media_kit/media_kit.dart'; -import 'package:media_kit_video/media_kit_video.dart' as media_kit; +import 'package:moodiary/common/values/media_type.dart'; +import 'package:moodiary/components/base/sheet.dart'; +import 'package:moodiary/utils/media_util.dart'; +import 'package:video_player/video_player.dart'; import 'video_state.dart'; class VideoLogic extends GetxController { final VideoState state = VideoState(); - late final player = Player(); - late final videoController = media_kit.VideoController(player); + late VideoPlayerController _videoPlayerController; + + late ChewieController chewieController; VideoLogic({required List videoPathList, required int initialIndex}) { state.videoPathList = videoPathList; state.videoIndex = initialIndex.obs; } + double get aspectRatio => _videoPlayerController.value.aspectRatio; + Completer? _initCompleter; + @override void onInit() { - state.playable = Playlist( - List.generate(state.videoPathList.length, (index) { - return Media(state.videoPathList[index]); - }), - index: state.videoIndex.value, - ); + _initCompleter = Completer(); + Future.delayed(const Duration(milliseconds: 300), () async { + await initVideo(); + _initCompleter?.complete(); + }); + super.onInit(); } - @override - void onReady() async { - await player.open(state.playable, play: true); - player.stream.playlist.listen((data) { - state.videoIndex.value = data.index; - }); - super.onReady(); + void cancelInitialization() { + if (!(_initCompleter?.isCompleted ?? true)) { + _initCompleter?.complete(); + state.isInitialized.value = false; + } } @override - void onClose() { - player.dispose(); + void onClose() async { + cancelInitialization(); + await _videoPlayerController.dispose(); + chewieController.dispose(); super.onClose(); } - void play() {} + Future initVideo() async { + _videoPlayerController = VideoPlayerController.file( + File(state.videoPathList[state.videoIndex.value]), + ); + chewieController = ChewieController( + videoPlayerController: _videoPlayerController, + allowPlaybackSpeedChanging: false, + optionsTranslation: OptionsTranslation(playbackSpeedButtonText: '播放速度'), + optionsBuilder: (context, options) async { + await showFloatingModalBottomSheet( + context: context, + builder: (context) { + return ListView.builder( + shrinkWrap: true, + padding: EdgeInsets.zero, + itemBuilder: (context, index) { + final option = options[index]; + return ListTile( + title: Text(option.title), + leading: Icon(option.iconData), + onTap: () { + option.onTap.call(context); + }, + ); + }, + itemCount: options.length, + ); + }, + ); + }, + additionalOptions: (context) { + return [ + OptionItem( + onTap: (context) { + MediaUtil.saveToGallery( + path: state.videoPathList[state.videoIndex.value], + type: MediaType.video, + ); + }, + iconData: Icons.save_alt_rounded, + title: '保存到相册', + ), + ]; + }, + ); + await _videoPlayerController.initialize(); + state.isInitialized.value = true; + } + + Future nextVideo() async { + if (state.videoIndex.value < state.videoPathList.length - 1) { + state.videoIndex.value++; + await _videoPlayerController.dispose(); + chewieController.dispose(); + initVideo(); + } + } + + Future previousVideo() async { + if (state.videoIndex.value > 0) { + state.videoIndex.value--; + await _videoPlayerController.dispose(); + chewieController.dispose(); + initVideo(); + } + } } diff --git a/lib/pages/video/video_state.dart b/lib/pages/video/video_state.dart index efabe36..092d166 100644 --- a/lib/pages/video/video_state.dart +++ b/lib/pages/video/video_state.dart @@ -1,14 +1,13 @@ import 'package:get/get.dart'; -import 'package:media_kit/media_kit.dart'; class VideoState { //视频路径 late List videoPathList; - late Playable playable; - //当前位置 late Rx videoIndex; + RxBool isInitialized = false.obs; + VideoState(); } diff --git a/lib/pages/video/video_view.dart b/lib/pages/video/video_view.dart index 6d253e4..fb18448 100644 --- a/lib/pages/video/video_view.dart +++ b/lib/pages/video/video_view.dart @@ -1,25 +1,25 @@ -import 'dart:io'; - -import 'package:dismissible_page/dismissible_page.dart'; +import 'package:chewie/chewie.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:media_kit_video/media_kit_video.dart'; -import 'package:moodiary/common/values/media_type.dart'; -import 'package:moodiary/utils/media_util.dart'; +import 'package:moodiary/components/base/button.dart'; +import 'package:moodiary/components/base/loading.dart'; import 'video_logic.dart'; Future showVideoView( BuildContext context, List videoPathList, - int initialIndex, { - required String heroTagPrefix, -}) async { - return await context.pushTransparentRoute( - VideoPage( - videoPathList: videoPathList, - initialIndex: initialIndex, - heroTagPrefix: heroTagPrefix, + int initialIndex, +) async { + return Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return VideoPage( + videoPathList: videoPathList, + initialIndex: initialIndex, + ); + }, ), ); } @@ -28,18 +28,14 @@ class VideoPage extends StatelessWidget { final List _videoPathList; final int _initialIndex; - final String _heroTagPrefix; - String get _tag => Object.hash(_videoPathList, _initialIndex).toString(); const VideoPage({ super.key, required List videoPathList, required int initialIndex, - required String heroTagPrefix, }) : _videoPathList = videoPathList, - _initialIndex = initialIndex, - _heroTagPrefix = heroTagPrefix; + _initialIndex = initialIndex; @override Widget build(BuildContext context) { @@ -49,72 +45,34 @@ class VideoPage extends StatelessWidget { ); final state = Bind.find(tag: _tag).state; - Widget buildCustomTheme({required Widget child}) { - if (Platform.isAndroid || Platform.isIOS) { - return MaterialVideoControlsTheme( - normal: kDefaultMaterialVideoControlsThemeData.copyWith( - seekBarPositionColor: context.theme.colorScheme.primary, - seekBarThumbColor: context.theme.colorScheme.primary, - ), - fullscreen: kDefaultMaterialVideoControlsThemeDataFullscreen.copyWith( - seekBarPositionColor: context.theme.colorScheme.primary, - seekBarThumbColor: context.theme.colorScheme.primary, - ), - child: child, - ); - } else { - return MaterialDesktopVideoControlsTheme( - normal: kDefaultMaterialDesktopVideoControlsThemeData.copyWith( - seekBarPositionColor: context.theme.colorScheme.primary, - seekBarThumbColor: context.theme.colorScheme.primary, - ), - fullscreen: kDefaultMaterialDesktopVideoControlsThemeData.copyWith( - seekBarPositionColor: context.theme.colorScheme.primary, - seekBarThumbColor: context.theme.colorScheme.primary, - ), - child: child, - ); - } - } - return GetBuilder( tag: _tag, assignId: true, builder: (_) { return Scaffold( backgroundColor: Colors.black, - appBar: AppBar( - backgroundColor: Colors.black, - title: Obx(() { - return Text( - '${state.videoIndex.value + 1}/${state.videoPathList.length}', - style: const TextStyle(color: Colors.white), - ); - }), - actions: [ - IconButton( - onPressed: () { - MediaUtil.saveToGallery( - path: state.videoPathList[state.videoIndex.value], - type: MediaType.video, - ); - }, - icon: const Icon(Icons.save_alt), - ), - ], - iconTheme: const IconThemeData(color: Colors.white), - ), - body: Padding( - padding: const EdgeInsets.symmetric(vertical: 56.0), - child: buildCustomTheme( - child: Hero( - tag: '$_heroTagPrefix${state.videoIndex.value}', - child: Video( - controller: logic.videoController, - controls: AdaptiveVideoControls, - alignment: Alignment.center, + body: SafeArea( + child: Stack( + children: [ + AnimatedSwitcher( + duration: Durations.medium2, + child: Obx(() { + return state.isInitialized.value + ? Chewie(controller: logic.chewieController) + : const Center( + child: MoodiaryLoading(color: Colors.white70), + ); + }), ), - ), + Positioned( + top: 0, + left: 0, + child: PageBackButton( + onBack: () => Navigator.pop(context), + color: Colors.white, + ), + ), + ], ), ), ); diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index ec24436..1b50433 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -17,14 +17,14 @@ import file_picker import file_selector_macos import flutter_image_compress_macos import flutter_inappwebview_macos -import flutter_secure_storage_macos +import flutter_secure_storage_darwin +import fvp import gal import geolocator_apple import isar_flutter_libs import local_auth_darwin import macos_ui import macos_window_utils -import media_kit_video import mobile_scanner import network_info_plus import package_info_plus @@ -36,7 +36,6 @@ import shared_preferences_foundation import sqflite_darwin import url_launcher_macos import video_player_avfoundation -import volume_controller import wakelock_plus func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { @@ -52,14 +51,14 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FlutterImageCompressMacosPlugin.register(with: registry.registrar(forPlugin: "FlutterImageCompressMacosPlugin")) InAppWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "InAppWebViewFlutterPlugin")) - FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) + FlutterSecureStorageDarwinPlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStorageDarwinPlugin")) + FvpPlugin.register(with: registry.registrar(forPlugin: "FvpPlugin")) GalPlugin.register(with: registry.registrar(forPlugin: "GalPlugin")) GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) IsarFlutterLibsPlugin.register(with: registry.registrar(forPlugin: "IsarFlutterLibsPlugin")) FLALocalAuthPlugin.register(with: registry.registrar(forPlugin: "FLALocalAuthPlugin")) MacOSUiPlugin.register(with: registry.registrar(forPlugin: "MacOSUiPlugin")) MacOSWindowUtilsPlugin.register(with: registry.registrar(forPlugin: "MacOSWindowUtilsPlugin")) - MediaKitVideoPlugin.register(with: registry.registrar(forPlugin: "MediaKitVideoPlugin")) MobileScannerPlugin.register(with: registry.registrar(forPlugin: "MobileScannerPlugin")) NetworkInfoPlusPlugin.register(with: registry.registrar(forPlugin: "NetworkInfoPlusPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) @@ -71,6 +70,5 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin")) - VolumeControllerPlugin.register(with: registry.registrar(forPlugin: "VolumeControllerPlugin")) WakelockPlusMacosPlugin.register(with: registry.registrar(forPlugin: "WakelockPlusMacosPlugin")) } diff --git a/macos/Podfile b/macos/Podfile index efa02bd..bc52813 100644 --- a/macos/Podfile +++ b/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '12.4' +platform :osx, '11.5' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/macos/Podfile.lock b/macos/Podfile.lock index e9fc743..98c3eb9 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -25,9 +25,14 @@ PODS: - flutter_inappwebview_macos (0.0.1): - FlutterMacOS - OrderedSet (~> 6.0.3) - - flutter_secure_storage_macos (6.1.3): + - flutter_secure_storage_darwin (10.0.0): + - Flutter - FlutterMacOS - FlutterMacOS (1.0.0) + - fvp (0.31.2): + - Flutter + - FlutterMacOS + - mdk (~> 0.32.0) - gal (1.0.0): - Flutter - FlutterMacOS @@ -43,8 +48,7 @@ PODS: - FlutterMacOS - macos_window_utils (1.0.0): - FlutterMacOS - - media_kit_video (0.0.1): - - FlutterMacOS + - mdk (0.32.0) - mobile_scanner (7.0.0): - Flutter - FlutterMacOS @@ -77,8 +81,6 @@ PODS: - video_player_avfoundation (0.0.1): - Flutter - FlutterMacOS - - volume_controller (0.0.1): - - FlutterMacOS - wakelock_plus (0.0.1): - FlutterMacOS @@ -95,15 +97,15 @@ DEPENDENCIES: - file_selector_macos (from `Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos`) - flutter_image_compress_macos (from `Flutter/ephemeral/.symlinks/plugins/flutter_image_compress_macos/macos`) - flutter_inappwebview_macos (from `Flutter/ephemeral/.symlinks/plugins/flutter_inappwebview_macos/macos`) - - flutter_secure_storage_macos (from `Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_macos/macos`) + - flutter_secure_storage_darwin (from `Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_darwin/darwin`) - FlutterMacOS (from `Flutter/ephemeral`) + - fvp (from `Flutter/ephemeral/.symlinks/plugins/fvp/darwin`) - gal (from `Flutter/ephemeral/.symlinks/plugins/gal/darwin`) - geolocator_apple (from `Flutter/ephemeral/.symlinks/plugins/geolocator_apple/darwin`) - isar_flutter_libs (from `Flutter/ephemeral/.symlinks/plugins/isar_flutter_libs/macos`) - local_auth_darwin (from `Flutter/ephemeral/.symlinks/plugins/local_auth_darwin/darwin`) - macos_ui (from `Flutter/ephemeral/.symlinks/plugins/macos_ui/macos`) - macos_window_utils (from `Flutter/ephemeral/.symlinks/plugins/macos_window_utils/macos`) - - media_kit_video (from `Flutter/ephemeral/.symlinks/plugins/media_kit_video/macos`) - mobile_scanner (from `Flutter/ephemeral/.symlinks/plugins/mobile_scanner/darwin`) - moodiary_rust (from `Flutter/ephemeral/.symlinks/plugins/moodiary_rust/macos`) - network_info_plus (from `Flutter/ephemeral/.symlinks/plugins/network_info_plus/macos`) @@ -117,11 +119,11 @@ DEPENDENCIES: - tflite_flutter (from `Flutter/ephemeral/.symlinks/plugins/tflite_flutter/macos`) - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) - video_player_avfoundation (from `Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin`) - - volume_controller (from `Flutter/ephemeral/.symlinks/plugins/volume_controller/macos`) - wakelock_plus (from `Flutter/ephemeral/.symlinks/plugins/wakelock_plus/macos`) SPEC REPOS: trunk: + - mdk - OrderedSet EXTERNAL SOURCES: @@ -149,10 +151,12 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/flutter_image_compress_macos/macos flutter_inappwebview_macos: :path: Flutter/ephemeral/.symlinks/plugins/flutter_inappwebview_macos/macos - flutter_secure_storage_macos: - :path: Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_macos/macos + flutter_secure_storage_darwin: + :path: Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_darwin/darwin FlutterMacOS: :path: Flutter/ephemeral + fvp: + :path: Flutter/ephemeral/.symlinks/plugins/fvp/darwin gal: :path: Flutter/ephemeral/.symlinks/plugins/gal/darwin geolocator_apple: @@ -165,8 +169,6 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/macos_ui/macos macos_window_utils: :path: Flutter/ephemeral/.symlinks/plugins/macos_window_utils/macos - media_kit_video: - :path: Flutter/ephemeral/.symlinks/plugins/media_kit_video/macos mobile_scanner: :path: Flutter/ephemeral/.symlinks/plugins/mobile_scanner/darwin moodiary_rust: @@ -193,8 +195,6 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos video_player_avfoundation: :path: Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin - volume_controller: - :path: Flutter/ephemeral/.symlinks/plugins/volume_controller/macos wakelock_plus: :path: Flutter/ephemeral/.symlinks/plugins/wakelock_plus/macos @@ -211,15 +211,16 @@ SPEC CHECKSUMS: file_selector_macos: 6280b52b459ae6c590af5d78fc35c7267a3c4b31 flutter_image_compress_macos: e68daf54bb4bf2144c580fd4d151c949cbf492f0 flutter_inappwebview_macos: c2d68649f9f8f1831bfcd98d73fd6256366d9d1d - flutter_secure_storage_macos: 7f45e30f838cf2659862a4e4e3ee1c347c2b3b54 + flutter_secure_storage_darwin: ce237a8775b39723566dc72571190a3769d70468 FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 + fvp: 89275776efede62b7fde1762afa518974e6d6750 gal: baecd024ebfd13c441269ca7404792a7152fde89 geolocator_apple: ab36aa0e8b7d7a2d7639b3b4e48308394e8cef5e isar_flutter_libs: a65381780401f81ad6bf3f2e7cd0de5698fb98c4 local_auth_darwin: 553ce4f9b16d3fdfeafce9cf042e7c9f77c1c391 macos_ui: 2047a8e6536a80491ef10684c53ca500e04f1bcf macos_window_utils: 3bca8603c2a1cf2257351dfe6bbccc9accf739fd - media_kit_video: 28d7d27611c7769a2464eb7621c37386a61dcc9a + mdk: a726c85fd49c002b83d586b278d452f387750889 mobile_scanner: 9157936403f5a0644ca3779a38ff8404c5434a93 moodiary_rust: 2f0ea7e60816f68d22e387a10b460860168eced5 network_info_plus: 21d1cd6a015ccb2fdff06a1fbfa88d54b4e92f61 @@ -234,9 +235,8 @@ SPEC CHECKSUMS: tflite_flutter: d1496f2e968aa5a142fb282da8f5d754fcee5613 url_launcher_macos: 0fba8ddabfc33ce0a9afe7c5fef5aab3d8d2d673 video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b - volume_controller: 5c068e6d085c80dadd33fc2c918d2114b775b3dd wakelock_plus: 21ddc249ac4b8d018838dbdabd65c5976c308497 -PODFILE CHECKSUM: b5ff078e9cf81bae88fdc8e0ce3668e57b68e9b6 +PODFILE CHECKSUM: ee954fade8f3b11c1f8b26bea93380ea85316f08 COCOAPODS: 1.16.2 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 748e052..b7b3ef2 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -27,8 +27,8 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - B294A5F06BA8DEEA2B5621F2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A163B19ACD1759CB6B96245C /* Pods_Runner.framework */; }; - D2083DAD28855ADFF9BCE729 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 062E9AEDD48754DD58606840 /* Pods_RunnerTests.framework */; }; + B2BDDB113DB6E92A5510450B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1F1E2E2DBB5821BBF9AAEC4 /* Pods_RunnerTests.framework */; }; + E91FAE0F9C10DFF499ED0B5F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04473D3E019850FA7FA6E092 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 062E9AEDD48754DD58606840 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 256A95C5CED82C3A4073DD6B /* 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 = ""; }; + 04473D3E019850FA7FA6E092 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1B8723A38851207565DC9583 /* 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 = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; @@ -80,14 +80,15 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 5CF38C383E04D546D61A9490 /* 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 = ""; }; + 4E905A5B154DD1B8AD75EF30 /* 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 = ""; }; + 773DF107698B1FD934C1F190 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 97D634C42B97998C1F01E8E7 /* 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 = ""; }; - A163B19ACD1759CB6B96245C /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B9A97CDAA2C693125A0E3E04 /* 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 = ""; }; - DA38952B9EA3CF9DF814D375 /* 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 = ""; }; - F01E320EF0604F995291062B /* 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 = ""; }; + A8B289900F392A981F386E13 /* 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 = ""; }; + A9972A3A2DB7E93900715A5D /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/MainMenu.strings"; sourceTree = ""; }; + B53D5753AA7518A479064B46 /* 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 = ""; }; + D1F1E2E2DBB5821BBF9AAEC4 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D97CA48613556C592CACDC9B /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +96,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D2083DAD28855ADFF9BCE729 /* Pods_RunnerTests.framework in Frameworks */, + B2BDDB113DB6E92A5510450B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +104,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B294A5F06BA8DEEA2B5621F2 /* Pods_Runner.framework in Frameworks */, + E91FAE0F9C10DFF499ED0B5F /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -136,8 +137,8 @@ 33CEB47122A05771004F2AC0 /* Flutter */, 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, EDED0BB97B01CCFB6A64BCD3 /* Pods */, + D99D36C010279B25B2A5FE5C /* Frameworks */, ); sourceTree = ""; }; @@ -185,11 +186,11 @@ path = Runner; sourceTree = ""; }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { + D99D36C010279B25B2A5FE5C /* Frameworks */ = { isa = PBXGroup; children = ( - A163B19ACD1759CB6B96245C /* Pods_Runner.framework */, - 062E9AEDD48754DD58606840 /* Pods_RunnerTests.framework */, + 04473D3E019850FA7FA6E092 /* Pods_Runner.framework */, + D1F1E2E2DBB5821BBF9AAEC4 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -197,12 +198,12 @@ EDED0BB97B01CCFB6A64BCD3 /* Pods */ = { isa = PBXGroup; children = ( - 256A95C5CED82C3A4073DD6B /* Pods-Runner.debug.xcconfig */, - 97D634C42B97998C1F01E8E7 /* Pods-Runner.release.xcconfig */, - B9A97CDAA2C693125A0E3E04 /* Pods-Runner.profile.xcconfig */, - F01E320EF0604F995291062B /* Pods-RunnerTests.debug.xcconfig */, - DA38952B9EA3CF9DF814D375 /* Pods-RunnerTests.release.xcconfig */, - 5CF38C383E04D546D61A9490 /* Pods-RunnerTests.profile.xcconfig */, + 773DF107698B1FD934C1F190 /* Pods-Runner.debug.xcconfig */, + 4E905A5B154DD1B8AD75EF30 /* Pods-Runner.release.xcconfig */, + A8B289900F392A981F386E13 /* Pods-Runner.profile.xcconfig */, + 1B8723A38851207565DC9583 /* Pods-RunnerTests.debug.xcconfig */, + D97CA48613556C592CACDC9B /* Pods-RunnerTests.release.xcconfig */, + B53D5753AA7518A479064B46 /* Pods-RunnerTests.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -214,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - CE7791590EBA8A96BB7E3D34 /* [CP] Check Pods Manifest.lock */, + EC96EE21FE0F593F50D55C4A /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -233,13 +234,13 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 44366270A6ABED4E91880B24 /* [CP] Check Pods Manifest.lock */, + 0A9AA66499C570764C3CBD7B /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 8010F38A8AE27D0DEBD01C99 /* [CP] Embed Pods Frameworks */, + 928F6410DFD8C056F5CFC907 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -283,11 +284,12 @@ }; buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; + developmentRegion = "zh-Hans"; hasScannedForEncodings = 0; knownRegions = ( en, Base, + "zh-Hans", ); mainGroup = 33CC10E42044A3C60003C045; productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; @@ -321,6 +323,28 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 0A9AA66499C570764C3CBD7B /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -359,29 +383,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 44366270A6ABED4E91880B24 /* [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; - }; - 8010F38A8AE27D0DEBD01C99 /* [CP] Embed Pods Frameworks */ = { + 928F6410DFD8C056F5CFC907 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -398,7 +400,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CE7791590EBA8A96BB7E3D34 /* [CP] Check Pods Manifest.lock */ = { + EC96EE21FE0F593F50D55C4A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -461,6 +463,7 @@ isa = PBXVariantGroup; children = ( 33CC10F52044A3C60003C045 /* Base */, + A9972A3A2DB7E93900715A5D /* zh-Hans */, ); name = MainMenu.xib; path = Runner; @@ -471,7 +474,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F01E320EF0604F995291062B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 1B8723A38851207565DC9583 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -486,7 +489,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DA38952B9EA3CF9DF814D375 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D97CA48613556C592CACDC9B /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -501,7 +504,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5CF38C383E04D546D61A9490 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = B53D5753AA7518A479064B46 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -520,6 +523,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -555,7 +559,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 12.4; + MACOSX_DEPLOYMENT_TARGET = 11.5; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -582,8 +586,9 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 12.4; + MACOSX_DEPLOYMENT_TARGET = 11.5; PRODUCT_BUNDLE_IDENTIFIER = cn.yooss.moodiary; + PRODUCT_COPYRIGHT = "Copyright © 2024 Moodiary All rights reserved."; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "moodiary-mac"; SWIFT_VERSION = 5.0; @@ -604,6 +609,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -645,7 +651,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 12.4; + MACOSX_DEPLOYMENT_TARGET = 11.5; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -660,6 +666,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -695,7 +702,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 12.4; + MACOSX_DEPLOYMENT_TARGET = 11.5; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -722,8 +729,9 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 12.4; + MACOSX_DEPLOYMENT_TARGET = 11.5; PRODUCT_BUNDLE_IDENTIFIER = cn.yooss.moodiary; + PRODUCT_COPYRIGHT = "Copyright © 2024 Moodiary All rights reserved."; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "moodiary-mac"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -750,9 +758,10 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 12.4; + MACOSX_DEPLOYMENT_TARGET = 11.5; ONLY_ACTIVE_ARCH = NO; PRODUCT_BUNDLE_IDENTIFIER = cn.yooss.moodiary; + PRODUCT_COPYRIGHT = "Copyright © 2024 Moodiary All rights reserved."; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "moodiary-mac"; SWIFT_VERSION = 5.0; diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements index 7e439b3..0fcfd43 100644 --- a/macos/Runner/DebugProfile.entitlements +++ b/macos/Runner/DebugProfile.entitlements @@ -2,11 +2,29 @@ - com.apple.security.app-sandbox - com.apple.security.cs.allow-jit - com.apple.security.network.server - com.apple.security.network.client - com.apple.security.personal-information.location - com.apple.security.device.audio-input + com.apple.security.app-sandbox + + com.apple.security.assets.movies.read-write + + com.apple.security.assets.music.read-write + + com.apple.security.assets.pictures.read-write + + com.apple.security.cs.allow-jit + + com.apple.security.device.audio-input + + com.apple.security.device.camera + + com.apple.security.files.downloads.read-write + + com.apple.security.files.user-selected.read-write + + com.apple.security.network.client + + com.apple.security.network.server + + com.apple.security.personal-information.location + diff --git a/macos/Runner/Info.plist b/macos/Runner/Info.plist index fc2db67..df6ca09 100644 --- a/macos/Runner/Info.plist +++ b/macos/Runner/Info.plist @@ -6,8 +6,6 @@ $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) - CFBundleIconFile - CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion @@ -20,21 +18,33 @@ $(FLUTTER_BUILD_NAME) CFBundleVersion $(FLUTTER_BUILD_NUMBER) + ITSAppUsesNonExemptEncryption + + LSApplicationCategoryType + public.app-category.lifestyle LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) + NSCameraUsageDescription + 应用需要您的同意,才能访问相机 NSHumanReadableCopyright $(PRODUCT_COPYRIGHT) + NSLocalNetworkUsageDescription + 应用需要您的同意,才能访问本地网络 NSLocationUsageDescription - + 应用需要获取您的定位以记录位置 NSMainNibFile MainMenu NSMicrophoneUsageDescription - Some message to describe why you need this permission + 应用需要访问您的麦克风来录音 NSPhotoLibraryAddUsageDescription - This app needs access to location. + 应用需要访问您的相册以获取照片 NSPhotoLibraryUsageDescription - + 应用需要您的同意,才能访问相册 NSPrincipalClass NSApplication + UTImportedTypeDeclarations + + + diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements index dcb2c9d..0fcfd43 100644 --- a/macos/Runner/Release.entitlements +++ b/macos/Runner/Release.entitlements @@ -2,11 +2,29 @@ - com.apple.security.app-sandbox - com.apple.security.cs.allow-jit - com.apple.security.network.server - com.apple.security.network.client - com.apple.security.personal-information.location - com.apple.security.device.audio-input + com.apple.security.app-sandbox + + com.apple.security.assets.movies.read-write + + com.apple.security.assets.music.read-write + + com.apple.security.assets.pictures.read-write + + com.apple.security.cs.allow-jit + + com.apple.security.device.audio-input + + com.apple.security.device.camera + + com.apple.security.files.downloads.read-write + + com.apple.security.files.user-selected.read-write + + com.apple.security.network.client + + com.apple.security.network.server + + com.apple.security.personal-information.location + diff --git a/macos/Runner/zh-Hans.lproj/MainMenu.strings b/macos/Runner/zh-Hans.lproj/MainMenu.strings new file mode 100644 index 0000000..b74fd92 --- /dev/null +++ b/macos/Runner/zh-Hans.lproj/MainMenu.strings @@ -0,0 +1,195 @@ + +/* Class = "NSMenuItem"; title = "APP_NAME"; ObjectID = "1Xt-HY-uBw"; */ +"1Xt-HY-uBw.title" = "APP_NAME"; + +/* Class = "NSMenu"; title = "Find"; ObjectID = "1b7-l0-nxx"; */ +"1b7-l0-nxx.title" = "Find"; + +/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "2oI-Rn-ZJC"; */ +"2oI-Rn-ZJC.title" = "Transformations"; + +/* Class = "NSMenu"; title = "Spelling"; ObjectID = "3IN-sU-3Bg"; */ +"3IN-sU-3Bg.title" = "Spelling"; + +/* Class = "NSMenu"; title = "Speech"; ObjectID = "3rS-ZA-NoH"; */ +"3rS-ZA-NoH.title" = "Speech"; + +/* Class = "NSMenuItem"; title = "Find"; ObjectID = "4EN-yA-p0u"; */ +"4EN-yA-p0u.title" = "Find"; + +/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ +"4J7-dP-txa.title" = "Enter Full Screen"; + +/* Class = "NSMenuItem"; title = "Quit APP_NAME"; ObjectID = "4sb-4s-VLi"; */ +"4sb-4s-VLi.title" = "Quit APP_NAME"; + +/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "5QF-Oa-p0T"; */ +"5QF-Oa-p0T.title" = "Edit"; + +/* Class = "NSMenuItem"; title = "About APP_NAME"; ObjectID = "5kV-Vb-QxS"; */ +"5kV-Vb-QxS.title" = "About APP_NAME"; + +/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "6dh-zS-Vam"; */ +"6dh-zS-Vam.title" = "Redo"; + +/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "78Y-hA-62v"; */ +"78Y-hA-62v.title" = "Correct Spelling Automatically"; + +/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "9ic-FL-obx"; */ +"9ic-FL-obx.title" = "Substitutions"; + +/* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "9yt-4B-nSM"; */ +"9yt-4B-nSM.title" = "Smart Copy/Paste"; + +/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "AYu-sK-qS6"; */ +"AYu-sK-qS6.title" = "Main Menu"; + +/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ +"BOF-NM-1cW.title" = "Preferences…"; + +/* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "Dv1-io-Yv7"; */ +"Dv1-io-Yv7.title" = "Spelling and Grammar"; + +/* Class = "NSMenuItem"; title = "Help"; ObjectID = "EPT-qC-fAb"; */ +"EPT-qC-fAb.title" = "Help"; + +/* Class = "NSMenu"; title = "Substitutions"; ObjectID = "FeM-D8-WVr"; */ +"FeM-D8-WVr.title" = "Substitutions"; + +/* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ +"H8h-7b-M4v.title" = "View"; + +/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "HFQ-gK-NFA"; */ +"HFQ-gK-NFA.title" = "Text Replacement"; + +/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "HFo-cy-zxI"; */ +"HFo-cy-zxI.title" = "Show Spelling and Grammar"; + +/* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ +"HyV-fh-RgO.title" = "View"; + +/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ +"Kd2-mp-pUS.title" = "Show All"; + +/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ +"LE2-aR-0XJ.title" = "Bring All to Front"; + +/* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ +"NMo-om-nkz.title" = "Services"; + +/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ +"OY7-WF-poV.title" = "Minimize"; + +/* Class = "NSMenuItem"; title = "Hide APP_NAME"; ObjectID = "Olw-nP-bQN"; */ +"Olw-nP-bQN.title" = "Hide APP_NAME"; + +/* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "OwM-mh-QMV"; */ +"OwM-mh-QMV.title" = "Find Previous"; + +/* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "Oyz-dy-DGm"; */ +"Oyz-dy-DGm.title" = "Stop Speaking"; + +/* Class = "NSWindow"; title = "APP_NAME"; ObjectID = "QvC-M9-y7g"; */ +"QvC-M9-y7g.title" = "APP_NAME"; + +/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ +"R4o-n2-Eq4.title" = "Zoom"; + +/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Ruw-6m-B2m"; */ +"Ruw-6m-B2m.title" = "Select All"; + +/* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "S0p-oC-mLd"; */ +"S0p-oC-mLd.title" = "Jump to Selection"; + +/* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ +"Td7-aD-5lo.title" = "Window"; + +/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "UEZ-Bs-lqG"; */ +"UEZ-Bs-lqG.title" = "Capitalize"; + +/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ +"Vdr-fp-XzO.title" = "Hide Others"; + +/* Class = "NSMenu"; title = "Edit"; ObjectID = "W48-6f-4Dl"; */ +"W48-6f-4Dl.title" = "Edit"; + +/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "WeT-3V-zwk"; */ +"WeT-3V-zwk.title" = "Paste and Match Style"; + +/* Class = "NSMenuItem"; title = "Find…"; ObjectID = "Xz5-n4-O0W"; */ +"Xz5-n4-O0W.title" = "Find…"; + +/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "YEy-JH-Tfz"; */ +"YEy-JH-Tfz.title" = "Find and Replace…"; + +/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Ynk-f8-cLZ"; */ +"Ynk-f8-cLZ.title" = "Start Speaking"; + +/* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ +"aUF-d1-5bR.title" = "Window"; + +/* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "buJ-ug-pKt"; */ +"buJ-ug-pKt.title" = "Use Selection for Find"; + +/* Class = "NSMenu"; title = "Transformations"; ObjectID = "c8a-y6-VQd"; */ +"c8a-y6-VQd.title" = "Transformations"; + +/* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "cwL-P1-jid"; */ +"cwL-P1-jid.title" = "Smart Links"; + +/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "d9M-CD-aMd"; */ +"d9M-CD-aMd.title" = "Make Lower Case"; + +/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "dRJ-4n-Yzg"; */ +"dRJ-4n-Yzg.title" = "Undo"; + +/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "gVA-U4-sdL"; */ +"gVA-U4-sdL.title" = "Paste"; + +/* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "hQb-2v-fYv"; */ +"hQb-2v-fYv.title" = "Smart Quotes"; + +/* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "hz2-CU-CR7"; */ +"hz2-CU-CR7.title" = "Check Document Now"; + +/* Class = "NSMenu"; title = "Services"; ObjectID = "hz9-B4-Xy5"; */ +"hz9-B4-Xy5.title" = "Services"; + +/* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "mK6-2p-4JG"; */ +"mK6-2p-4JG.title" = "Check Grammar With Spelling"; + +/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "pa3-QI-u2k"; */ +"pa3-QI-u2k.title" = "Delete"; + +/* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "q09-fT-Sye"; */ +"q09-fT-Sye.title" = "Find Next"; + +/* Class = "NSMenu"; title = "Help"; ObjectID = "rJ0-wn-3NY"; */ +"rJ0-wn-3NY.title" = "Help"; + +/* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "rbD-Rh-wIN"; */ +"rbD-Rh-wIN.title" = "Check Spelling While Typing"; + +/* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "rgM-f4-ycn"; */ +"rgM-f4-ycn.title" = "Smart Dashes"; + +/* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "tRr-pd-1PS"; */ +"tRr-pd-1PS.title" = "Data Detectors"; + +/* Class = "NSMenu"; title = "APP_NAME"; ObjectID = "uQy-DD-JDr"; */ +"uQy-DD-JDr.title" = "APP_NAME"; + +/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "uRl-iY-unG"; */ +"uRl-iY-unG.title" = "Cut"; + +/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "vmV-6d-7jI"; */ +"vmV-6d-7jI.title" = "Make Upper Case"; + +/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "x3v-GG-iWU"; */ +"x3v-GG-iWU.title" = "Copy"; + +/* Class = "NSMenuItem"; title = "Speech"; ObjectID = "xrE-MZ-jX0"; */ +"xrE-MZ-jX0.title" = "Speech"; + +/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "z6F-FW-3nz"; */ +"z6F-FW-3nz.title" = "Show Substitutions"; diff --git a/pubspec.lock b/pubspec.lock index dd5e79a..ecdd583 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -98,10 +98,10 @@ packages: dependency: "direct main" description: name: archive - sha256: "7dcbd0f87fe5f61cb28da39a1a8b70dbc106e2fe0516f7836eb7bb2948481a12" + sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" url: "https://pub.dev" source: hosted - version: "4.0.5" + version: "4.0.7" args: dependency: transitive description: @@ -114,10 +114,10 @@ packages: dependency: transitive description: name: asn1lib - sha256: e02d018628c870ef2d7f03e33f9ad179d89ff6ec52ca6c56bcb80bcef979867f + sha256: "0511d6be23b007e95105ae023db599aea731df604608978dada7f9faf2637623" url: "https://pub.dev" source: hosted - version: "1.6.2" + version: "1.6.4" async: dependency: transitive description: @@ -450,10 +450,10 @@ packages: dependency: "direct main" description: name: connectivity_plus - sha256: "04bf81bb0b77de31557b58d052b24b3eee33f09a6e7a8c68a3e247c7df19ec27" + sha256: "051849e2bd7c7b3bc5844ea0d096609ddc3a859890ec3a9ac4a65a2620cc1f99" url: "https://pub.dev" source: hosted - version: "6.1.3" + version: "6.1.4" connectivity_plus_platform_interface: dependency: transitive description: @@ -554,10 +554,10 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: "306b78788d1bb569edb7c55d622953c2414ca12445b41c9117963e03afc5c513" + sha256: "0c6396126421b590089447154c5f98a5de423b70cfb15b1578fd018843ee6f53" url: "https://pub.dev" source: hosted - version: "11.3.3" + version: "11.4.0" device_info_plus_platform_interface: dependency: transitive description: @@ -690,10 +690,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: "8986dec4581b4bcd4b6df5d75a2ea0bede3db802f500635d05fa8be298f9467f" + sha256: "77f8e81d22d2a07d0dee2c62e1dda71dc1da73bf43bb2d45af09727406167964" url: "https://pub.dev" source: hosted - version: "10.1.2" + version: "10.1.9" file_selector_linux: dependency: transitive description: @@ -738,10 +738,10 @@ packages: dependency: "direct main" description: name: fl_chart - sha256: f2e9137f261d0f53a820f6b829c80ba570ac915284c8e32789d973834796eca0 + sha256: "577aeac8ca414c25333334d7c4bb246775234c0e44b38b10a82b559dd4d764e7" url: "https://pub.dev" source: hosted - version: "0.71.0" + version: "1.0.0" flutter: dependency: "direct main" description: flutter @@ -751,10 +751,10 @@ packages: dependency: "direct main" description: name: flutter_adaptive_scaffold - sha256: "7279d74da2f2531a16d21c2ec327308778c3aedd672dfe4eaf3bf416463501f8" + sha256: "5eb1d1d174304a4e67c4bb402ed38cb4a5ebdac95ce54099e91460accb33d295" url: "https://pub.dev" source: hosted - version: "0.3.2" + version: "0.3.3+1" flutter_cache_manager: dependency: "direct main" description: @@ -871,18 +871,18 @@ packages: dependency: "direct main" description: name: flutter_inappwebview - sha256: "80092d13d3e29b6227e25b67973c67c7210bd5e35c4b747ca908e31eb71a46d5" + sha256: a8f5c9dd300a8cc7fde7bb902ae57febe95e9269424e4d08d5a1a56214e1e6ff url: "https://pub.dev" source: hosted - version: "6.1.5" + version: "6.2.0-beta.2" flutter_inappwebview_android: dependency: transitive description: name: flutter_inappwebview_android - sha256: "62557c15a5c2db5d195cb3892aab74fcaec266d7b86d59a6f0027abd672cddba" + sha256: "2427e89d9c7b00cc756f800932d7ab8f3272d3fbc71544e1aedb3dbc17dae074" url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.2.0-beta.2" flutter_inappwebview_internal_annotations: dependency: transitive description: @@ -895,42 +895,42 @@ packages: dependency: transitive description: name: flutter_inappwebview_ios - sha256: "5818cf9b26cf0cbb0f62ff50772217d41ea8d3d9cc00279c45f8aabaa1b4025d" + sha256: "7ff65d7408e453f9a4ff38f74673aeec8cae824cba8276b4b77350262bfe356a" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.2.0-beta.2" flutter_inappwebview_macos: dependency: transitive description: name: flutter_inappwebview_macos - sha256: c1fbb86af1a3738e3541364d7d1866315ffb0468a1a77e34198c9be571287da1 + sha256: be8b8ab0100c94ec9fc079a4d48b2bc8dd1a8b4c2647da34f1d3dae93cd5f88a url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.2.0-beta.2" flutter_inappwebview_platform_interface: dependency: transitive description: name: flutter_inappwebview_platform_interface - sha256: cf5323e194096b6ede7a1ca808c3e0a078e4b33cc3f6338977d75b4024ba2500 + sha256: "2c99bf767900ba029d825bc6f494d30169ee83cdaa038d86e85fe70571d0a655" url: "https://pub.dev" source: hosted - version: "1.3.0+1" + version: "1.4.0-beta.2" flutter_inappwebview_web: dependency: transitive description: name: flutter_inappwebview_web - sha256: "55f89c83b0a0d3b7893306b3bb545ba4770a4df018204917148ebb42dc14a598" + sha256: "6c4bb61ea9d52e51d79ea23da27c928d0430873c04ad380df39c1ef442b11f4e" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.2.0-beta.2" flutter_inappwebview_windows: dependency: transitive description: name: flutter_inappwebview_windows - sha256: "8b4d3a46078a2cdc636c4a3d10d10f2a16882f6be607962dbfff8874d1642055" + sha256: "0ff241f814b7caff63b9632cf858b6d3d9c35758040620a9745e5f6e9dd94d74" url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.7.0-beta.2" flutter_keyboard_visibility_linux: dependency: transitive description: @@ -1004,10 +1004,10 @@ packages: dependency: "direct main" description: name: flutter_map_cache - sha256: "8d3aa34f148a82000734ab806f7326c8d0991316e8472faf1cf14bf6cf5d7dd1" + sha256: fc9697760dc95b6adf75110a23a800ace5d95a735a58ec43f05183bc675c7246 url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.0.0+1" flutter_map_marker_cluster: dependency: "direct main" description: @@ -1028,10 +1028,10 @@ packages: dependency: "direct main" description: name: flutter_markdown - sha256: "634622a3a826d67cb05c0e3e576d1812c430fa98404e95b60b131775c73d76ec" + sha256: "08fb8315236099ff8e90cb87bb2b935e0a724a3af1623000a9cec930468e0f27" url: "https://pub.dev" source: hosted - version: "0.7.7" + version: "0.7.7+1" flutter_modular: dependency: "direct main" description: @@ -1052,18 +1052,18 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "5a1e6fb2c0561958d7e4c33574674bda7b77caaca7a33b758876956f2902eea3" + sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e url: "https://pub.dev" source: hosted - version: "2.0.27" + version: "2.0.28" flutter_quill: dependency: "direct main" description: name: flutter_quill - sha256: "6b9a29b5e054fd90373988f710e8060e3f44e9f875dd5e02bf0c10bc22e53133" + sha256: "7e60963632bbc8615627f0bae8e178515f69ecb378ad49fa68c43c2aabf33e21" url: "https://pub.dev" source: hosted - version: "11.2.0" + version: "11.4.1" flutter_quill_delta_from_html: dependency: transitive description: @@ -1092,50 +1092,50 @@ packages: dependency: "direct main" description: name: flutter_secure_storage - sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea" + sha256: f7eceb0bc6f4fd0441e29d43cab9ac2a1c5ffd7ea7b64075136b718c46954874 url: "https://pub.dev" source: hosted - version: "9.2.4" + version: "10.0.0-beta.4" + flutter_secure_storage_darwin: + dependency: transitive + description: + name: flutter_secure_storage_darwin + sha256: f226f2a572bed96bc6542198ebaec227150786e34311d455a7e2d3d06d951845 + url: "https://pub.dev" + source: hosted + version: "0.1.0" flutter_secure_storage_linux: dependency: transitive description: name: flutter_secure_storage_linux - sha256: bf7404619d7ab5c0a1151d7c4e802edad8f33535abfbeff2f9e1fe1274e2d705 + sha256: "9b4b73127e857cd3117d43a70fa3dddadb6e0b253be62e6a6ab85caa0742182c" url: "https://pub.dev" source: hosted - version: "1.2.2" - flutter_secure_storage_macos: - dependency: transitive - description: - name: flutter_secure_storage_macos - sha256: "6c0a2795a2d1de26ae202a0d78527d163f4acbb11cde4c75c670f3a0fc064247" - url: "https://pub.dev" - source: hosted - version: "3.1.3" + version: "2.0.1" flutter_secure_storage_platform_interface: dependency: transitive description: name: flutter_secure_storage_platform_interface - sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8 + sha256: "8ceea1223bee3c6ac1a22dabd8feefc550e4729b3675de4b5900f55afcb435d6" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "2.0.1" flutter_secure_storage_web: dependency: transitive description: name: flutter_secure_storage_web - sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9 + sha256: "4c3f233e739545c6cb09286eeec1cc4744138372b985113acc904f7263bef517" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "2.0.0" flutter_secure_storage_windows: dependency: transitive description: name: flutter_secure_storage_windows - sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709 + sha256: ff32af20f70a8d0e59b2938fc92de35b54a74671041c814275afd80e27df9f21 url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "4.0.0" flutter_smart_dialog: dependency: "direct main" description: @@ -1166,10 +1166,10 @@ packages: dependency: "direct main" description: name: fpdart - sha256: "9c82219bf8f7ab481c1d6c76e85c62e36aeb00429758100e1655b7cf5e22d055" + sha256: "1b84ce64453974159f08046f5d05592020d1fcb2099d7fe6ec58da0e7337af77" url: "https://pub.dev" source: hosted - version: "2.0.0-dev.3" + version: "1.1.1" freezed: dependency: "direct dev" description: @@ -1198,10 +1198,18 @@ packages: dependency: transitive description: name: functions_client - sha256: a49876ebae32a50eb62483c5c5ac80ed0d8da34f98ccc23986b03a8d28cee07c + sha256: b410e4d609522357396cd84bb9a8f6e3a4561b5f7d3ce82267f6f1c2af42f16b url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" + fvp: + dependency: "direct main" + description: + name: fvp + sha256: "895421eafcb14c3f66fed24b20b6421e45711224d0df29ecd7b8bdb37a867f69" + url: "https://pub.dev" + source: hosted + version: "0.31.2" gal: dependency: "direct main" description: @@ -1275,13 +1283,13 @@ packages: source: hosted version: "5.0.0-release-candidate-9.3.2" get_it: - dependency: transitive + dependency: "direct main" description: name: get_it - sha256: d85128a5dae4ea777324730dc65edd9c9f43155c109d5cc0a69cab74139fbac1 + sha256: f126a3e286b7f5b578bf436d5592968706c4c1de28a228b870ce375d9f743103 url: "https://pub.dev" source: hosted - version: "7.7.0" + version: "8.0.3" glob: dependency: transitive description: @@ -1294,10 +1302,10 @@ packages: dependency: transitive description: name: gotrue - sha256: d6362dff9a54f8c1c372bb137c858b4024c16407324d34e6473e59623c9b9f50 + sha256: "04a6efacffd42773ed96dc752f19bb20a1fbc383e81ba82659072b775cf62912" url: "https://pub.dev" source: hosted - version: "2.11.1" + version: "2.12.0" gradient_borders: dependency: transitive description: @@ -1342,34 +1350,34 @@ packages: dependency: "direct main" description: name: hive_ce - sha256: ac66daee46ad46486a1ed12cf91e9d7479c875fb46889be8d2c96b557406647f + sha256: "192b7334299e3672efa1f85d544fef0091c5c592be5caada61417e37723addc6" url: "https://pub.dev" source: hosted - version: "2.10.1" + version: "2.11.2" hive_ce_flutter: dependency: "direct main" description: name: hive_ce_flutter - sha256: "74c1d5f10d803446b4e7913bb272137e2724ba8a56465444f9e7713aeb60a877" + sha256: a0989670652eab097b47544f1e5a4456e861b1b01b050098ea0b80a5fabe9909 url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.1" html: dependency: transitive description: name: html - sha256: "9475be233c437f0e3637af55e7702cbbe5c23a68bd56e8a5fa2d426297b7c6c8" + sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" url: "https://pub.dev" source: hosted - version: "0.15.5+1" + version: "0.15.6" http: dependency: transitive description: name: http - sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f + sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" http_cache_core: dependency: transitive description: @@ -1422,10 +1430,10 @@ packages: dependency: "direct main" description: name: image_picker_android - sha256: "8bd392ba8b0c8957a157ae0dc9fcf48c58e6c20908d5880aea1d79734df090e9" + sha256: "317a5d961cec5b34e777b9252393f2afbd23084aa6e60fcf601dcf6341b9ebeb" url: "https://pub.dev" source: hosted - version: "0.8.12+22" + version: "0.8.12+23" image_picker_for_web: dependency: transitive description: @@ -1523,6 +1531,14 @@ packages: url: "https://github.com/ZhuJHua/isar" source: git version: "4.0.0-dev.14" + isolate_channel: + dependency: transitive + description: + name: isolate_channel + sha256: bafedfbcc1e9796ada179b5dac7043b33eb85d35204b089ca37d480d9c0068df + url: "https://pub.dev" + source: hosted + version: "0.2.2" js: dependency: transitive description: @@ -1615,10 +1631,10 @@ packages: dependency: "direct main" description: name: local_auth_android - sha256: "0abe4e72f55c785b28900de52a2522c86baba0988838b5dc22241b072ecccd74" + sha256: "63ad7ca6396290626dc0cb34725a939e4cfe965d80d36112f08d49cf13a8136e" url: "https://pub.dev" source: hosted - version: "1.0.48" + version: "1.0.49" local_auth_darwin: dependency: transitive description: @@ -1703,10 +1719,10 @@ packages: dependency: "direct main" description: name: markdown_widget - sha256: "216dced98962d7699a265344624bc280489d739654585ee881c95563a3252fac" + sha256: b52c13d3ee4d0e60c812e15b0593f142a3b8a2003cde1babb271d001a1dbdc1c url: "https://pub.dev" source: hosted - version: "2.3.2+6" + version: "2.3.2+8" matcher: dependency: transitive description: @@ -1723,32 +1739,8 @@ packages: url: "https://pub.dev" source: hosted version: "0.11.1" - media_kit: - dependency: "direct main" - description: - name: media_kit - sha256: "48c10c3785df5d88f0eef970743f8c99b2e5da2b34b9d8f9876e598f62d9e776" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - media_kit_libs_windows_video: - dependency: "direct main" - description: - name: media_kit_libs_windows_video - sha256: dff76da2778729ab650229e6b4ec6ec111eb5151431002cbd7ea304ff1f112ab - url: "https://pub.dev" - source: hosted - version: "1.0.11" - media_kit_video: - dependency: "direct main" - description: - name: media_kit_video - sha256: a656a9463298c1adc64c57f2d012874f7f2900f0c614d9545a3e7b8bb9e2137b - url: "https://pub.dev" - source: hosted - version: "1.3.0" meta: - dependency: transitive + dependency: "direct main" description: name: meta sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c @@ -1783,10 +1775,10 @@ packages: dependency: "direct main" description: name: mobile_scanner - sha256: "8676156e140c315068cf9b74ceb42b11b239a4895b00914d1d2ca056f70bc917" + sha256: "72f06a071aa8b14acea3ab43ea7949eefe4a2469731ae210e006ba330a033a8c" url: "https://pub.dev" source: hosted - version: "7.0.0-beta.9" + version: "7.0.0" modal_bottom_sheet: dependency: "direct main" description: @@ -1814,10 +1806,10 @@ packages: dependency: "direct dev" description: name: msix - sha256: c50d6bd1aafe0d071a3c1e5a5ccb056404502935cb0a549e3178c4aae16caf33 + sha256: edde648a8133bf301883c869d19d127049683037c65ff64173ba526ac7a8af2f url: "https://pub.dev" source: hosted - version: "3.16.8" + version: "3.16.9" nested: dependency: transitive description: @@ -1830,10 +1822,10 @@ packages: dependency: "direct main" description: name: network_info_plus - sha256: "08f4166bbb77da9e407edef6322a33f87b18c0ca46483fb25606cb3d2bfcdd2a" + sha256: f926b2ba86aa0086a0dfbb9e5072089bc213d854135c1712f1d29fc89ba3c877 url: "https://pub.dev" source: hosted - version: "6.1.3" + version: "6.1.4" network_info_plus_platform_interface: dependency: transitive description: @@ -1918,10 +1910,10 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "0ca7359dad67fd7063cb2892ab0c0737b2daafd807cf1acecd62374c8fae6c12" + sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9 url: "https://pub.dev" source: hosted - version: "2.2.16" + version: "2.2.17" path_provider_foundation: dependency: transitive description: @@ -2070,10 +2062,10 @@ packages: dependency: transitive description: name: postgrest - sha256: b74dc0f57b5dca5ce9f57a54b08110bf41d6fc8a0483c0fec10c79e9aa0fb2bb + sha256: "10b81a23b1c829ccadf68c626b4d66666453a1474d24c563f313f5ca7851d575" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" proj4dart: dependency: transitive description: @@ -2086,10 +2078,10 @@ packages: dependency: transitive description: name: provider - sha256: "489024f942069c2920c844ee18bb3d467c69e48955a4f32d1677f71be103e310" + sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "6.1.5" pub_semver: dependency: transitive description: @@ -2198,10 +2190,10 @@ packages: dependency: transitive description: name: realtime_client - sha256: e3089dac2121917cc0c72d42ab056fea0abbaf3c2229048fc50e64bafc731adf + sha256: "3a0a99b5bd0fc3b35e8ee846d9a22fa2c2117f7ef1cb73d1e5f08f6c3d09c4e9" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.5.0" record: dependency: "direct main" description: @@ -2214,10 +2206,10 @@ packages: dependency: transitive description: name: record_android - sha256: "36e009c3b83e034321a44a7683d95dd055162a231f95600f7da579dcc79701f9" + sha256: "97d7122455f30de89a01c6c244c839085be6b12abca251fc0e78f67fed73628b" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" record_ios: dependency: transitive description: @@ -2290,30 +2282,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.28.0" - safe_local_storage: - dependency: transitive - description: - name: safe_local_storage - sha256: e9a21b6fec7a8aa62cc2585ff4c1b127df42f3185adbd2aca66b47abe2e80236 - url: "https://pub.dev" - source: hosted - version: "2.0.1" - screen_brightness_android: - dependency: transitive - description: - name: screen_brightness_android - sha256: "6ba1b5812f66c64e9e4892be2d36ecd34210f4e0da8bdec6a2ea34f1aa42683e" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - screen_brightness_platform_interface: - dependency: transitive - description: - name: screen_brightness_platform_interface - sha256: "737bd47b57746bc4291cab1b8a5843ee881af499514881b0247ec77447ee769c" - url: "https://pub.dev" - source: hosted - version: "2.1.0" scroll_to_index: dependency: transitive description: @@ -2342,18 +2310,18 @@ packages: dependency: "direct main" description: name: share_plus - sha256: fce43200aa03ea87b91ce4c3ac79f0cecd52e2a7a56c7a4185023c271fbfa6da + sha256: b2961506569e28948d75ec346c28775bb111986bb69dc6a20754a457e3d97fa0 url: "https://pub.dev" source: hosted - version: "10.1.4" + version: "11.0.0" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: cc012a23fc2d479854e6c80150696c4a5f5bb62cb89af4de1c505cf78d0a5d0b + sha256: "1032d392bc5d2095a77447a805aa3f804d2ae6a4d5eef5e6ebb3bd94c1bc19ef" url: "https://pub.dev" source: hosted - version: "5.0.2" + version: "6.0.0" shared_preferences: dependency: "direct main" description: @@ -2366,10 +2334,10 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: c2c8c46297b5d6a80bed7741ec1f2759742c77d272f1a1698176ae828f8e1a18 + sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac" url: "https://pub.dev" source: hosted - version: "2.4.9" + version: "2.4.10" shared_preferences_foundation: dependency: transitive description: @@ -2539,10 +2507,10 @@ packages: dependency: transitive description: name: storage_client - sha256: "9f9ed283943313b23a1b27139bb18986e9b152a6d34530232c702c468d98e91a" + sha256: "09bac4d75eea58e8113ca928e6655a09cc8059e6d1b472ee801f01fde815bcfc" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.0" stream_channel: dependency: transitive description: @@ -2579,34 +2547,34 @@ packages: dependency: transitive description: name: supabase - sha256: c3ebddba69ddcf16d8b78e8c44c4538b0193d1cf944fde3b72eb5b279892a370 + sha256: f00172f5f0b2148ea1c573f52862d50cacb6f353f579f741fa35e51704845958 url: "https://pub.dev" source: hosted - version: "2.6.3" + version: "2.7.0" supabase_flutter: dependency: "direct main" description: name: supabase_flutter - sha256: "3b5b5b492e342f63f301605d0c66f6528add285b5744f53c9fd9abd5ffdbce5b" + sha256: d88eccf9e46e57129725a08e72a3109b6f780921fdc27fe3d7669a11ae80906b url: "https://pub.dev" source: hosted - version: "2.8.4" + version: "2.9.0" syncfusion_flutter_core: dependency: transitive description: name: syncfusion_flutter_core - sha256: "98580db6186b46aae965d3f480f7830b0ee6f58c4e1bbbb3fb3de6a121f61836" + sha256: "32649080c81f8699386988e27ea37b51f9c468f1e3a78a26f0540b665c762327" url: "https://pub.dev" source: hosted - version: "29.1.38" + version: "29.2.4" syncfusion_flutter_sliders: dependency: "direct main" description: name: syncfusion_flutter_sliders - sha256: a0d479786701f505b3c29f48c1c7934e2e0ffe682adb72ed95b39918914eeea7 + sha256: "36c47dd7d04e2e21afd97f09da29f250e68b9e643e9b5ac24a1f803aac7a94b3" url: "https://pub.dev" source: hosted - version: "29.1.38" + version: "29.2.4" synchronized: dependency: "direct main" description: @@ -2703,22 +2671,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.2" - universal_platform: - dependency: transitive - description: - name: universal_platform - sha256: "64e16458a0ea9b99260ceb5467a214c1f298d647c659af1bff6d3bf82536b1ec" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - uri_parser: - dependency: transitive - description: - name: uri_parser - sha256: ff4d2c720aca3f4f7d5445e23b11b2d15ef8af5ddce5164643f38ff962dcb270 - url: "https://pub.dev" - source: hosted - version: "3.0.0" url_launcher: dependency: "direct main" description: @@ -2731,10 +2683,10 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "1d0eae19bd7606ef60fe69ef3b312a437a16549476c42321d5dc1506c9ca3bf4" + sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79" url: "https://pub.dev" source: hosted - version: "6.3.15" + version: "6.3.16" url_launcher_ios: dependency: transitive description: @@ -2771,10 +2723,10 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "3ba963161bd0fe395917ba881d320b9c4f6dd3c4a233da62ab18a5025c85f1e9" + sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" url_launcher_windows: dependency: transitive description: @@ -2827,10 +2779,10 @@ packages: dependency: transitive description: name: video_player_android - sha256: ae7d4f1b41e3ac6d24dd9b9d5d6831b52d74a61bdd90a7a6262a33d8bb97c29a + sha256: "1f4e8e0e02403452d699ef7cf73fe9936fac8f6f0605303d111d71acb375d1bc" url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.8.3" video_player_avfoundation: dependency: transitive description: @@ -2839,14 +2791,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.7.1" - video_player_media_kit: - dependency: "direct main" - description: - name: video_player_media_kit - sha256: "1e228ab1b606eac4b5febcffad8e42ffbed12315672ce10d9e949961acdda65d" - url: "https://pub.dev" - source: hosted - version: "1.0.6" video_player_platform_interface: dependency: transitive description: @@ -2859,10 +2803,10 @@ packages: dependency: transitive description: name: video_player_web - sha256: "3ef40ea6d72434edbfdba4624b90fd3a80a0740d260667d91e7ecd2d79e13476" + sha256: e8bba2e5d1e159d5048c9a491bb2a7b29c535c612bb7d10c1e21107f5bd365ba url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.3.5" visibility_detector: dependency: transitive description: @@ -2879,22 +2823,14 @@ packages: url: "https://pub.dev" source: hosted version: "14.3.1" - volume_controller: - dependency: transitive - description: - name: volume_controller - sha256: e82fd689bb8e1fe8e64be3fa5946ff8699058f8cf9f4c1679acdba20cda7f5bd - url: "https://pub.dev" - source: hosted - version: "3.3.3" wakelock_plus: dependency: "direct main" description: name: wakelock_plus - sha256: b6962cd9fc15e4843b573ba7b53bc46dd8a787594cf9ed5c5182581924656a58 + sha256: a474e314c3e8fb5adef1f9ae2d247e57467ad557fa7483a2b895bc1b421c5678 url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" wakelock_plus_platform_interface: dependency: transitive description: @@ -2931,10 +2867,10 @@ packages: dependency: transitive description: name: web_socket - sha256: bfe6f435f6ec49cb6c01da1e275ae4228719e59a6b067048c51e72d9d63bcc4b + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.1" web_socket_channel: dependency: transitive description: @@ -2955,10 +2891,10 @@ packages: dependency: transitive description: name: win32 - sha256: dc6ecaa00a7c708e5b4d10ee7bec8c270e9276dfcab1783f57e9962d7884305f + sha256: "329edf97fdd893e0f1e3b9e88d6a0e627128cc17cc316a8d67fda8f1451178ba" url: "https://pub.dev" source: hosted - version: "5.12.0" + version: "5.13.0" win32_registry: dependency: transitive description: @@ -2975,6 +2911,15 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + word_cloud: + dependency: "direct main" + description: + path: word_cloud + ref: HEAD + resolved-ref: "105add6ed920b13c9255649e30b34850b4b192f5" + url: "https://github.com/RGLie/word_cloud.git" + source: git + version: "1.0.1" xdg_directories: dependency: transitive description: @@ -3003,10 +2948,10 @@ packages: dependency: transitive description: name: yet_another_json_isolate - sha256: "56155e9e0002cc51ea7112857bbcdc714d4c35e176d43e4d3ee233009ff410c9" + sha256: fe45897501fa156ccefbfb9359c9462ce5dec092f05e8a56109db30be864f01e url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "2.1.0" sdks: dart: ">=3.7.0 <4.0.0" flutter: ">=3.29.0" diff --git a/pubspec.yaml b/pubspec.yaml index aca51c6..72bb103 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: moodiary description: "A fully open source cross-platform diary app written by flutter and rust." publish_to: 'none' -version: 2.7.3+74 +version: 2.7.3+90 environment: sdk: '>=3.7.0' @@ -19,21 +19,21 @@ dependencies: logger: 2.5.0 flutter_drawing_board: 0.9.8 flutter_displaymode: 0.6.0 - fl_chart: 0.71.0 - file_picker: 10.1.2 + fl_chart: 1.0.0 + file_picker: 10.1.9 local_auth: 2.3.0 - local_auth_android: 1.0.48 + local_auth_android: 1.0.49 permission_handler: 12.0.0+1 image_picker: 1.1.2 - device_info_plus: 11.3.3 + device_info_plus: 11.4.0 package_info_plus: 8.3.0 uuid: 4.5.1 - flutter_quill: 11.2.0 - share_plus: 10.1.4 + flutter_quill: 11.4.1 + share_plus: 11.0.0 url_launcher: 6.3.1 - archive: 4.0.5 + archive: 4.0.7 crypto: 3.0.6 - markdown_widget: 2.3.2+6 + markdown_widget: 2.3.2+8 flutter_colorpicker: 1.1.0 geolocator: 14.0.0 shared_preferences: 2.5.3 @@ -47,7 +47,7 @@ dependencies: record: 6.0.0 duration: 4.0.3 dynamic_color: 1.7.0 - supabase_flutter: 2.8.4 + supabase_flutter: 2.9.0 bitsdojo_window: 0.1.6 intl: 0.19.0 collection: 1.19.1 @@ -56,14 +56,11 @@ dependencies: tflite_flutter: 0.11.0 sliver_tools: 0.2.12 lottie: 3.3.1 - media_kit: 1.2.0 - media_kit_video: 1.3.0 - media_kit_libs_windows_video: 1.0.11 - flutter_adaptive_scaffold: 0.3.2 + flutter_adaptive_scaffold: 0.3.3+1 cross_file: 0.3.4+2 fc_native_video_thumbnail: 0.17.2 flutter_map: 7.0.2 - flutter_map_cache: 2.0.0 + flutter_map_cache: 2.0.0+1 flutter_map_marker_cluster: 1.4.0 http_cache_hive_store: 5.0.1 latlong2: 0.9.1 @@ -75,14 +72,14 @@ dependencies: encrypt: 5.0.3 faker: 2.2.0 flutter_rust_bridge: 2.9.0 - syncfusion_flutter_sliders: 29.1.38 + syncfusion_flutter_sliders: 29.2.4 flutter_quill_extensions: 11.0.0 - connectivity_plus: 6.1.3 - image_picker_android: 0.8.12+22 - video_player_media_kit: 1.0.6 + connectivity_plus: 6.1.4 + image_picker_android: 0.8.12+23 + fvp: 0.31.2 video_player: 2.9.5 chewie: 1.11.3 - flutter_markdown: 0.7.7 + flutter_markdown: 0.7.7+1 image_picker_platform_interface: 2.10.1 flutter_image_compress: 2.4.0 mime: 2.0.0 @@ -91,7 +88,7 @@ dependencies: confetti: 0.8.0 flutter_native_splash: 2.4.6 gal: 2.3.1 - network_info_plus: 6.1.3 + network_info_plus: 6.1.4 scrollable_positioned_list: 0.3.8 flutter_localizations: sdk: flutter @@ -100,12 +97,12 @@ dependencies: modal_bottom_sheet: 3.0.0 tutorial_coach_mark: 1.3.0 adaptive_dialog: 2.4.1 - flutter_inappwebview: 6.1.5 + flutter_inappwebview: 6.2.0-beta.2 markdown: 7.3.0 flutter_highlight: 0.7.0 synchronized: 3.3.1 - flutter_secure_storage: 9.2.4 - fpdart: 2.0.0-dev.3 + flutter_secure_storage: 10.0.0-beta.4 + fpdart: 1.1.1 rxdart: 0.28.0 minio: 3.5.7 page_transition: 2.2.1 @@ -118,31 +115,39 @@ dependencies: flutter_smart_dialog: 4.9.8+7 substring_highlight: 1.0.33 qr_flutter: 4.1.0 - mobile_scanner: 7.0.0-beta.9 + mobile_scanner: 7.0.0 throttling: 2.0.1 gap: 3.0.1 flutter_cache_manager: 3.4.1 - hive_ce: 2.10.1 - hive_ce_flutter: 2.2.0 + hive_ce: 2.11.2 + hive_ce_flutter: 2.3.1 flutter_modular: 6.3.4 freezed_annotation: 3.0.0 json_annotation: 4.9.0 - wakelock_plus: 1.3.1 + wakelock_plus: 1.3.2 + word_cloud: + git: + url: https://github.com/RGLie/word_cloud.git + path: word_cloud + get_it: any + meta: 1.16.0 dev_dependencies: flutter_test: sdk: flutter build_runner: 2.4.15 flutter_launcher_icons: 0.14.3 - msix: 3.16.8 + msix: 3.16.9 flutter_lints: 5.0.0 flutter_gen: 5.10.0 flutter_gen_runner: 5.10.0 freezed: 3.0.6 json_serializable: 6.9.5 + dependency_overrides: source_gen: 2.0.0 + get_it: 8.0.3 flutter_launcher_icons: diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 19d239e..6e1aa39 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -122,6 +122,18 @@ dependencies = [ "syn", ] +[[package]] +name = "argon2" +version = "0.6.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f95281c5706985b6c00f8a2270438f968d475672aa68a4a85cddcb57a68577b" +dependencies = [ + "base64ct", + "blake2", + "cpufeatures", + "password-hash", +] + [[package]] name = "arrayvec" version = "0.7.6" @@ -178,6 +190,12 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "base64ct" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" + [[package]] name = "bit_field" version = "0.10.2" @@ -202,6 +220,15 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" +[[package]] +name = "blake2" +version = "0.11.0-pre.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6dbf347378982186052c47f25f33fc1a6eb439ee840d778eb3ec132e304379d" +dependencies = [ + "digest 0.11.0-pre.9", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -211,6 +238,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.11.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a229bfd78e4827c91b9b95784f69492c1b77c1ab75a45a8a037b139215086f94" +dependencies = [ + "hybrid-array", +] + [[package]] name = "build-target" version = "0.4.0" @@ -231,9 +267,9 @@ checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "bytemuck" -version = "1.22.0" +version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" +checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" [[package]] name = "byteorder" @@ -268,9 +304,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.19" +version = "1.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362" +checksum = "8691782945451c1c383942c4874dbe63814f61cb57ef773cda2972682b7bb3c0" dependencies = [ "jobserver", "libc", @@ -308,7 +344,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "crypto-common", + "crypto-common 0.1.6", "inout", ] @@ -417,6 +453,15 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-common" +version = "0.2.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170d71b5b14dec99db7739f6fc7d6ec2db80b78c3acb77db48392ccc3d8a9ea0" +dependencies = [ + "hybrid-array", +] + [[package]] name = "darling" version = "0.20.11" @@ -551,8 +596,19 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", - "crypto-common", + "block-buffer 0.10.4", + "crypto-common 0.1.6", + "subtle", +] + +[[package]] +name = "digest" +version = "0.11.0-pre.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf2e3d6615d99707295a9673e889bf363a04b2a466bd320c65a72536f7577379" +dependencies = [ + "block-buffer 0.11.0-rc.4", + "crypto-common 0.2.0-rc.2", "subtle", ] @@ -793,9 +849,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", @@ -854,9 +910,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" [[package]] name = "heck" @@ -882,7 +938,16 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", +] + +[[package]] +name = "hybrid-array" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d15931895091dea5c47afa5b3c9a01ba634b311919fd4d41388fa0e3d76af" +dependencies = [ + "typenum", ] [[package]] @@ -960,7 +1025,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.15.3", ] [[package]] @@ -1102,12 +1167,6 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" -[[package]] -name = "lockfree-object-pool" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" - [[package]] name = "log" version = "0.4.27" @@ -1161,7 +1220,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ "cfg-if", - "digest", + "digest 0.10.7", ] [[package]] @@ -1191,6 +1250,7 @@ name = "moodiary_rust" version = "0.1.0" dependencies = [ "anyhow", + "argon2", "fast_image_resize", "flutter_rust_bridge", "image", @@ -1326,6 +1386,17 @@ dependencies = [ "log", ] +[[package]] +name = "password-hash" +version = "0.6.0-rc.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3b470a56963403c40f9dbb41eaee539759de9d026d3324da705a0ae0d269cd" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + [[package]] name = "paste" version = "1.0.15" @@ -1338,7 +1409,7 @@ version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ - "digest", + "digest 0.10.7", "hmac", ] @@ -1429,7 +1500,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.8.24", + "zerocopy 0.8.25", ] [[package]] @@ -1517,7 +1588,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", ] [[package]] @@ -1633,7 +1704,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", "untrusted", "windows-sys 0.52.0", @@ -1703,7 +1774,7 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", ] [[package]] @@ -1762,9 +1833,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.100" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -1861,9 +1932,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.20" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" dependencies = [ "serde", "serde_spanned", @@ -1873,18 +1944,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ "indexmap", "serde", @@ -2144,9 +2215,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.7.6" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63d3fcd9bba44b03821e7d699eeee959f3126dcc4aa8e4ae18ec617c2a5cea10" +checksum = "d9fb597c990f03753e08d3c29efbfcf2019a003b4bf4ba19225c158e1549f0f3" dependencies = [ "memchr", ] @@ -2180,11 +2251,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.24" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" dependencies = [ - "zerocopy-derive 0.8.24", + "zerocopy-derive 0.8.25", ] [[package]] @@ -2200,9 +2271,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.8.24" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" dependencies = [ "proc-macro2", "quote", @@ -2259,15 +2330,13 @@ dependencies = [ [[package]] name = "zopfli" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" +checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" dependencies = [ "bumpalo", "crc32fast", - "lockfree-object-pool", "log", - "once_cell", "simd-adler32", ] diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 887c45b..c42801e 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -18,6 +18,7 @@ walkdir = "2.5.0" jieba-rs = { version = "0.7.2", features = ["default-dict", "tfidf", "textrank"] } once_cell = "1.21.3" tokio = "1.44.2" +argon2 = { version = "0.6.0-pre.1", features = ["std", "default"] } [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(frb_expand)'] } diff --git a/rust/src/api/argon2.rs b/rust/src/api/argon2.rs new file mode 100644 index 0000000..2a5477f --- /dev/null +++ b/rust/src/api/argon2.rs @@ -0,0 +1,27 @@ +use argon2::{ + password_hash::{rand_core::OsRng, PasswordHasher, PasswordVerifier, SaltString}, + Argon2, +}; +use flutter_rust_bridge::frb; + +#[frb(opaque)] +pub struct Argon2Rs; + +impl Argon2Rs { + pub fn hash_password(password: String) -> Option { + let salt = SaltString::generate(&mut OsRng); + let argon2 = Argon2::default(); + + argon2 + .hash_password(password.as_bytes(), &salt) + .map(|hashed_password| hashed_password.to_string()) + .ok() + } + pub fn verify_password(hash: String, password: String) -> bool { + let parsed_hash = argon2::PasswordHash::new(&hash).unwrap(); + let argon2 = argon2::Argon2::default(); + argon2 + .verify_password(password.as_bytes(), &parsed_hash) + .is_ok() + } +} diff --git a/rust/src/api/jieba.rs b/rust/src/api/jieba.rs index be1ae4b..b83602d 100644 --- a/rust/src/api/jieba.rs +++ b/rust/src/api/jieba.rs @@ -15,7 +15,7 @@ pub struct JiebaRs { #[derive(Debug, Clone)] #[frb(opaque)] -pub struct Keyword { +pub struct JiebaKeyword { pub keyword: String, pub weight: f64, } @@ -88,7 +88,7 @@ impl JiebaRs { text: String, top_k: usize, allowed_pos: Vec, - ) -> Result> { + ) -> Result> { let jieba = Self::get_instance()?; let tfidf = jieba .tfidf @@ -103,7 +103,7 @@ impl JiebaRs { text: String, top_k: usize, allowed_pos: Vec, - ) -> Result> { + ) -> Result> { let jieba = Self::get_instance()?; let text_rank = jieba .text_rank @@ -114,10 +114,10 @@ impl JiebaRs { Ok(Self::convert_keywords(keywords)) } - fn convert_keywords(keywords: Vec) -> Vec { + fn convert_keywords(keywords: Vec) -> Vec { keywords .into_iter() - .map(|k| Keyword { + .map(|k| JiebaKeyword { keyword: k.keyword, weight: k.weight, }) diff --git a/rust/src/api/mod.rs b/rust/src/api/mod.rs index c40cb50..e1ddcd4 100644 --- a/rust/src/api/mod.rs +++ b/rust/src/api/mod.rs @@ -4,4 +4,5 @@ pub mod kmp; pub mod font; pub mod aes; pub mod zip; -pub mod jieba; \ No newline at end of file +pub mod jieba; +pub mod argon2; \ No newline at end of file diff --git a/rust/src/frb_generated.rs b/rust/src/frb_generated.rs index a34deec..920d96d 100644 --- a/rust/src/frb_generated.rs +++ b/rust/src/frb_generated.rs @@ -26,6 +26,7 @@ // Section: imports use crate::api::aes::*; +use crate::api::argon2::*; use crate::api::compress::*; use crate::api::font::*; use crate::api::jieba::*; @@ -43,7 +44,7 @@ flutter_rust_bridge::frb_generated_boilerplate!( default_rust_auto_opaque = RustAutoOpaqueMoi, ); pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.9.0"; -pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 1525123801; +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 1609532906; // Section: executor @@ -161,6 +162,77 @@ fn wire__crate__api__aes__AesEncryption_encrypt_impl( }, ) } +fn wire__crate__api__argon2__Argon2Rs_hash_password_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Argon2Rs_hash_password", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_password = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_, ()>::Ok( + crate::api::argon2::Argon2Rs::hash_password(api_password), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__api__argon2__Argon2Rs_verify_password_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Argon2Rs_verify_password", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_hash = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_, ()>::Ok( + crate::api::argon2::Argon2Rs::verify_password(api_hash, api_password), + )?; + Ok(output_ok) + })()) + } + }, + ) +} fn wire__crate__api__font__FontReader_get_font_name_from_ttf_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -285,6 +357,200 @@ fn wire__crate__api__compress__ImageCompress_contain_with_options_impl( }, ) } +fn wire__crate__api__jieba__JiebaKeyword_auto_accessor_get_keyword_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "JiebaKeyword_auto_accessor_get_keyword", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.keyword.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__jieba__JiebaKeyword_auto_accessor_get_weight_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "JiebaKeyword_auto_accessor_get_weight", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.weight.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__jieba__JiebaKeyword_auto_accessor_set_keyword_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "JiebaKeyword_auto_accessor_set_keyword", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_keyword = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.keyword = api_keyword; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__jieba__JiebaKeyword_auto_accessor_set_weight_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "JiebaKeyword_auto_accessor_set_weight", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_weight = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.weight = api_weight; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} fn wire__crate__api__jieba__JiebaRs_cut_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -475,200 +741,6 @@ fn wire__crate__api__jieba__JiebaRs_extract_keywords_tfidf_impl( }, ) } -fn wire__crate__api__jieba__Keyword_auto_accessor_get_keyword_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Keyword_auto_accessor_get_keyword", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.keyword.clone())?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__jieba__Keyword_auto_accessor_get_weight_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Keyword_auto_accessor_get_weight", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.weight.clone())?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__jieba__Keyword_auto_accessor_set_keyword_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Keyword_auto_accessor_set_keyword", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_keyword = ::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), - _ => unreachable!(), - } - } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - { - api_that_guard.keyword = api_keyword; - }; - })?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__jieba__Keyword_auto_accessor_set_weight_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Keyword_auto_accessor_set_weight", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_weight = ::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), - _ => unreachable!(), - } - } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - { - api_that_guard.weight = api_weight; - }; - })?; - Ok(output_ok) - })()) - }, - ) -} fn wire__crate__api__kmp__Kmp_find_matches_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -1098,6 +1170,9 @@ fn wire__crate__api__kmp__kmp_search_impl( flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); +flutter_rust_bridge::frb_generated_moi_arc_impl_value!( + flutter_rust_bridge::for_generated::RustAutoOpaqueInner +); flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); @@ -1105,10 +1180,10 @@ flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); flutter_rust_bridge::frb_generated_moi_arc_impl_value!( - flutter_rust_bridge::for_generated::RustAutoOpaqueInner + flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); flutter_rust_bridge::frb_generated_moi_arc_impl_value!( - flutter_rust_bridge::for_generated::RustAutoOpaqueInner + flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner @@ -1137,6 +1212,16 @@ impl SseDecode for AesEncryption { } } +impl SseDecode for Argon2Rs { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut inner = , + >>::sse_decode(deserializer); + return flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned(inner); + } +} + impl SseDecode for FontReader { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -1157,21 +1242,21 @@ impl SseDecode for ImageCompress { } } -impl SseDecode for JiebaRs { +impl SseDecode for JiebaKeyword { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut inner = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(deserializer); return flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned(inner); } } -impl SseDecode for Keyword { +impl SseDecode for JiebaRs { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut inner = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(deserializer); return flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned(inner); } @@ -1227,6 +1312,16 @@ impl SseDecode } } +impl SseDecode + for RustOpaqueMoi> +{ + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut inner = ::sse_decode(deserializer); + return decode_rust_opaque_moi(inner); + } +} + impl SseDecode for RustOpaqueMoi> { @@ -1247,7 +1342,9 @@ impl SseDecode } } -impl SseDecode for RustOpaqueMoi> { +impl SseDecode + for RustOpaqueMoi> +{ // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut inner = ::sse_decode(deserializer); @@ -1255,7 +1352,7 @@ impl SseDecode for RustOpaqueMoi> { +impl SseDecode for RustOpaqueMoi> { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut inner = ::sse_decode(deserializer); @@ -1328,13 +1425,13 @@ impl SseDecode for i32 { } } -impl SseDecode for Vec { +impl SseDecode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut len_ = ::sse_decode(deserializer); let mut ans_ = vec![]; for idx_ in 0..len_ { - ans_.push(::sse_decode(deserializer)); + ans_.push(::sse_decode(deserializer)); } return ans_; } @@ -1516,50 +1613,59 @@ fn pde_ffi_dispatcher_primary_impl( wire__crate__api__aes__AesEncryption_derive_key_impl(port, ptr, rust_vec_len, data_len) } 3 => wire__crate__api__aes__AesEncryption_encrypt_impl(port, ptr, rust_vec_len, data_len), - 4 => wire__crate__api__font__FontReader_get_font_name_from_ttf_impl( + 4 => { + wire__crate__api__argon2__Argon2Rs_hash_password_impl(port, ptr, rust_vec_len, data_len) + } + 5 => wire__crate__api__argon2__Argon2Rs_verify_password_impl( port, ptr, rust_vec_len, data_len, ), - 5 => wire__crate__api__font__FontReader_get_wght_axis_from_vf_font_impl( + 6 => wire__crate__api__font__FontReader_get_font_name_from_ttf_impl( port, ptr, rust_vec_len, data_len, ), - 6 => wire__crate__api__compress__ImageCompress_contain_with_options_impl( + 7 => wire__crate__api__font__FontReader_get_wght_axis_from_vf_font_impl( port, ptr, rust_vec_len, data_len, ), - 7 => wire__crate__api__jieba__JiebaRs_cut_impl(port, ptr, rust_vec_len, data_len), - 8 => wire__crate__api__jieba__JiebaRs_cut_all_impl(port, ptr, rust_vec_len, data_len), - 9 => { + 8 => wire__crate__api__compress__ImageCompress_contain_with_options_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 13 => wire__crate__api__jieba__JiebaRs_cut_impl(port, ptr, rust_vec_len, data_len), + 14 => wire__crate__api__jieba__JiebaRs_cut_all_impl(port, ptr, rust_vec_len, data_len), + 15 => { wire__crate__api__jieba__JiebaRs_cut_for_search_impl(port, ptr, rust_vec_len, data_len) } - 10 => wire__crate__api__jieba__JiebaRs_extract_keywords_text_rank_impl( + 16 => wire__crate__api__jieba__JiebaRs_extract_keywords_text_rank_impl( port, ptr, rust_vec_len, data_len, ), - 11 => wire__crate__api__jieba__JiebaRs_extract_keywords_tfidf_impl( + 17 => wire__crate__api__jieba__JiebaRs_extract_keywords_tfidf_impl( port, ptr, rust_vec_len, data_len, ), - 16 => wire__crate__api__kmp__Kmp_find_matches_impl(port, ptr, rust_vec_len, data_len), - 17 => wire__crate__api__kmp__Kmp_replace_with_kmp_impl(port, ptr, rust_vec_len, data_len), - 18 => wire__crate__api__zip__Zip_add_dir_impl(port, ptr, rust_vec_len, data_len), - 19 => wire__crate__api__zip__Zip_add_file_impl(port, ptr, rust_vec_len, data_len), - 20 => wire__crate__api__zip__Zip_extract_impl(port, ptr, rust_vec_len, data_len), - 21 => wire__crate__api__zip__Zip_finish_impl(port, ptr, rust_vec_len, data_len), - 23 => wire__crate__api__kmp__build_prefix_table_impl(port, ptr, rust_vec_len, data_len), - 24 => wire__crate__api__jieba__init_jieba_impl(port, ptr, rust_vec_len, data_len), - 25 => wire__crate__api__kmp__kmp_search_impl(port, ptr, rust_vec_len, data_len), + 18 => wire__crate__api__kmp__Kmp_find_matches_impl(port, ptr, rust_vec_len, data_len), + 19 => wire__crate__api__kmp__Kmp_replace_with_kmp_impl(port, ptr, rust_vec_len, data_len), + 20 => wire__crate__api__zip__Zip_add_dir_impl(port, ptr, rust_vec_len, data_len), + 21 => wire__crate__api__zip__Zip_add_file_impl(port, ptr, rust_vec_len, data_len), + 22 => wire__crate__api__zip__Zip_extract_impl(port, ptr, rust_vec_len, data_len), + 23 => wire__crate__api__zip__Zip_finish_impl(port, ptr, rust_vec_len, data_len), + 25 => wire__crate__api__kmp__build_prefix_table_impl(port, ptr, rust_vec_len, data_len), + 26 => wire__crate__api__jieba__init_jieba_impl(port, ptr, rust_vec_len, data_len), + 27 => wire__crate__api__kmp__kmp_search_impl(port, ptr, rust_vec_len, data_len), _ => unreachable!(), } } @@ -1572,27 +1678,27 @@ fn pde_ffi_dispatcher_sync_impl( ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { // Codec=Pde (Serialization + dispatch), see doc to use other codecs match func_id { - 12 => wire__crate__api__jieba__Keyword_auto_accessor_get_keyword_impl( + 9 => wire__crate__api__jieba__JiebaKeyword_auto_accessor_get_keyword_impl( ptr, rust_vec_len, data_len, ), - 13 => wire__crate__api__jieba__Keyword_auto_accessor_get_weight_impl( + 10 => wire__crate__api__jieba__JiebaKeyword_auto_accessor_get_weight_impl( ptr, rust_vec_len, data_len, ), - 14 => wire__crate__api__jieba__Keyword_auto_accessor_set_keyword_impl( + 11 => wire__crate__api__jieba__JiebaKeyword_auto_accessor_set_keyword_impl( ptr, rust_vec_len, data_len, ), - 15 => wire__crate__api__jieba__Keyword_auto_accessor_set_weight_impl( + 12 => wire__crate__api__jieba__JiebaKeyword_auto_accessor_set_weight_impl( ptr, rust_vec_len, data_len, ), - 22 => wire__crate__api__zip__Zip_new_impl(ptr, rust_vec_len, data_len), + 24 => wire__crate__api__zip__Zip_new_impl(ptr, rust_vec_len, data_len), _ => unreachable!(), } } @@ -1614,6 +1720,21 @@ impl flutter_rust_bridge::IntoIntoDart> for AesEncrypt } } +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for FrbWrapper { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self.0) + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for FrbWrapper {} + +impl flutter_rust_bridge::IntoIntoDart> for Argon2Rs { + fn into_into_dart(self) -> FrbWrapper { + self.into() + } +} + // Codec=Dco (DartCObject based), see doc to use other codecs impl flutter_rust_bridge::IntoDart for FrbWrapper { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { @@ -1644,6 +1765,21 @@ impl flutter_rust_bridge::IntoIntoDart> for ImageCompr } } +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for FrbWrapper { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self.0) + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for FrbWrapper {} + +impl flutter_rust_bridge::IntoIntoDart> for JiebaKeyword { + fn into_into_dart(self) -> FrbWrapper { + self.into() + } +} + // Codec=Dco (DartCObject based), see doc to use other codecs impl flutter_rust_bridge::IntoDart for FrbWrapper { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { @@ -1659,21 +1795,6 @@ impl flutter_rust_bridge::IntoIntoDart> for JiebaRs { } } -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for FrbWrapper { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self.0) - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for FrbWrapper {} - -impl flutter_rust_bridge::IntoIntoDart> for Keyword { - fn into_into_dart(self) -> FrbWrapper { - self.into() - } -} - // Codec=Dco (DartCObject based), see doc to use other codecs impl flutter_rust_bridge::IntoDart for FrbWrapper { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { @@ -1741,6 +1862,13 @@ impl SseEncode for AesEncryption { } } +impl SseEncode for Argon2Rs { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + >>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer); + } +} + impl SseEncode for FontReader { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -1755,6 +1883,13 @@ impl SseEncode for ImageCompress { } } +impl SseEncode for JiebaKeyword { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + >>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer); + } +} + impl SseEncode for JiebaRs { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -1762,13 +1897,6 @@ impl SseEncode for JiebaRs { } } -impl SseEncode for Keyword { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - >>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer); - } -} - impl SseEncode for Kmp { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -1821,6 +1949,17 @@ impl SseEncode } } +impl SseEncode + for RustOpaqueMoi> +{ + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + let (ptr, size) = self.sse_encode_raw(); + ::sse_encode(ptr, serializer); + ::sse_encode(size, serializer); + } +} + impl SseEncode for RustOpaqueMoi> { @@ -1843,7 +1982,9 @@ impl SseEncode } } -impl SseEncode for RustOpaqueMoi> { +impl SseEncode + for RustOpaqueMoi> +{ // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { let (ptr, size) = self.sse_encode_raw(); @@ -1852,7 +1993,7 @@ impl SseEncode for RustOpaqueMoi> { +impl SseEncode for RustOpaqueMoi> { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { let (ptr, size) = self.sse_encode_raw(); @@ -1931,12 +2072,12 @@ impl SseEncode for i32 { } } -impl SseEncode for Vec { +impl SseEncode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { ::sse_encode(self.len() as _, serializer); for item in self { - ::sse_encode(item, serializer); + ::sse_encode(item, serializer); } } } @@ -2095,6 +2236,7 @@ mod io { use super::*; use crate::api::aes::*; + use crate::api::argon2::*; use crate::api::compress::*; use crate::api::font::*; use crate::api::jieba::*; @@ -2124,6 +2266,20 @@ mod io { MoiArc::>::decrement_strong_count(ptr as _); } + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArgon2Rs( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_moodiary_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArgon2Rs( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + #[unsafe(no_mangle)] pub extern "C" fn frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( ptr: *const std::ffi::c_void, @@ -2152,6 +2308,20 @@ mod io { MoiArc::>::decrement_strong_count(ptr as _); } + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaKeyword( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_moodiary_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaKeyword( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + #[unsafe(no_mangle)] pub extern "C" fn frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( ptr: *const std::ffi::c_void, @@ -2166,20 +2336,6 @@ mod io { MoiArc::>::decrement_strong_count(ptr as _); } - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_moodiary_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - #[unsafe(no_mangle)] pub extern "C" fn frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( ptr: *const std::ffi::c_void, diff --git a/rust/src/test/argon2_test.rs b/rust/src/test/argon2_test.rs new file mode 100644 index 0000000..5a6436c --- /dev/null +++ b/rust/src/test/argon2_test.rs @@ -0,0 +1,36 @@ +#[cfg(test)] +mod argon2_test { + use crate::api::argon2::Argon2Rs; + #[test] + fn test_hash_password() { + let password = "my_secure_password".to_string(); + + let hashed_password = Argon2Rs::hash_password(password.clone()); + + assert!(hashed_password.is_some()); + assert!(!hashed_password.unwrap().is_empty()); + } + + #[test] + fn test_verify_password_success() { + let password = "my_secure_password".to_string(); + + let hashed_password = Argon2Rs::hash_password(password.clone()).unwrap(); + + let is_verified = Argon2Rs::verify_password(hashed_password, password); + + assert!(is_verified); + } + + #[test] + fn test_verify_password_failure() { + let password = "my_secure_password".to_string(); + let wrong_password = "incorrect_password".to_string(); + + let hashed_password = Argon2Rs::hash_password(password.clone()).unwrap(); + + let is_verified = Argon2Rs::verify_password(hashed_password, wrong_password); + + assert!(!is_verified); + } +} diff --git a/rust/src/test/mod.rs b/rust/src/test/mod.rs index 5f98fd7..935aff1 100644 --- a/rust/src/test/mod.rs +++ b/rust/src/test/mod.rs @@ -1,2 +1,3 @@ mod aes_test; mod kmp_test; +mod argon2_test; diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 50ffc09..40b0a53 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -15,17 +15,15 @@ #include #include #include +#include #include #include #include #include -#include -#include #include #include #include #include -#include void RegisterPlugins(flutter::PluginRegistry* registry) { AppLinksPluginCApiRegisterWithRegistrar( @@ -46,6 +44,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("FlutterInappwebviewWindowsPluginCApi")); FlutterSecureStorageWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); + FvpPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FvpPluginCApi")); GalPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("GalPluginCApi")); GeolocatorWindowsRegisterWithRegistrar( @@ -54,10 +54,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("IsarFlutterLibsPlugin")); LocalAuthPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("LocalAuthPlugin")); - MediaKitLibsWindowsVideoPluginCApiRegisterWithRegistrar( - registry->GetRegistrarForPlugin("MediaKitLibsWindowsVideoPluginCApi")); - MediaKitVideoPluginCApiRegisterWithRegistrar( - registry->GetRegistrarForPlugin("MediaKitVideoPluginCApi")); PermissionHandlerWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); RecordWindowsPluginCApiRegisterWithRegistrar( @@ -66,6 +62,4 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); - VolumeControllerPluginCApiRegisterWithRegistrar( - registry->GetRegistrarForPlugin("VolumeControllerPluginCApi")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 4fac616..0eaca36 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -12,17 +12,15 @@ list(APPEND FLUTTER_PLUGIN_LIST file_selector_windows flutter_inappwebview_windows flutter_secure_storage_windows + fvp gal geolocator_windows isar_flutter_libs local_auth_windows - media_kit_libs_windows_video - media_kit_video permission_handler_windows record_windows share_plus url_launcher_windows - volume_controller ) list(APPEND FLUTTER_FFI_PLUGIN_LIST