feat(video): use ffmpeg as video backend (#241)

* chore(deps): update dependencies

* chore(deps): update dependencies

* fix: update ios and macos platform version

* chore(deps): update deps

* chore(deps): update deps

* chore(deps): update deps

* feat: add argon2 support

* chore(deps): update deps

* chore(deps): update deps

* chore(deps): update deps

* chore(deps): update deps

* chore(deps): update deps

* chore(deps): update deps

* chore(deps): update deps

* chore(deps): update deps

* feat(video): use ffmpeg as video backend

* fix(video): simplify video view invocation and improve button interaction

* feat(button): add customizable color option to PageBackButton

[skip ci]
This commit is contained in:
住京华
2025-05-19 00:18:51 +08:00
committed by GitHub
parent 4d93fe259b
commit b8ce69011c
31 changed files with 1457 additions and 916 deletions

View File

@@ -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'

View File

@@ -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

View File

@@ -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 = "<group>"; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
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 = "<group>"; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
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 = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
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 = "<group>"; };
A910B4CF2D4C960600C998E7 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/Main.storyboard; sourceTree = "<group>"; };
A910B4D02D4C960600C998E7 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
A910B4D12D4C961C00C998E7 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = "zh-Hans"; path = "zh-Hans.lproj/Main.storyboard"; sourceTree = "<group>"; };
A910B4D22D4C961C00C998E7 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = "zh-Hans"; path = "zh-Hans.lproj/LaunchScreen.storyboard"; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
/* 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 = "<group>";
};
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 = "<group>";
@@ -138,7 +129,7 @@
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
4358F1D645E2BE879D24A551 /* Pods */,
32F89EBD1A567B14B95A803E /* Frameworks */,
B0AE19443A2FC97A6908AB80 /* Frameworks */,
);
sourceTree = "<group>";
};
@@ -166,6 +157,15 @@
path = Runner;
sourceTree = "<group>";
};
B0AE19443A2FC97A6908AB80 /* Frameworks */ = {
isa = PBXGroup;
children = (
8E85B5AB729F0B2360835644 /* Pods_Runner.framework */,
F2698D5B078302CF0E4E6EE6 /* Pods_RunnerTests.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* 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;

View File

@@ -51,7 +51,7 @@
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"

View File

@@ -20,24 +20,38 @@
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppleMusicUsageDescription</key>
<string>应用需要您的同意,才能访问媒体资料库</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>应用需要您的同意,才能使用蓝牙</string>
<key>NSCameraUsageDescription</key>
<string>使用你的摄像头拍摄媒体</string>
<string>应用需要您的同意,才能访问相机</string>
<key>NSContactsUsageDescription</key>
<string>应用需要您的同意,才能访问通讯录</string>
<key>NSFaceIDUsageDescription</key>
<string>应用需要您的同意,才能获取人脸识别权限</string>
<string>应用需要您的同意,才能使用人脸识别</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>应用需要您的同意,才能访问位置</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>应用需要您的同意,才能访问位置信息,以便于获取位置</string>
<string>应用需要您的同意,才能访问位置</string>
<key>NSMicrophoneUsageDescription</key>
<string>应用需要您的同意,才能使用麦克风,以便于语音录制</string>
<string>应用需要您的同意,才能使用麦克风</string>
<key>NSMotionUsageDescription</key>
<string>应用需要您的同意,才能访问运动与健身</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>访问你的媒体数据</string>
<string>应用需要您的同意,才能访问照片</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>访问你的照片</string>
<string>应用需要您的同意,才能访问照片</string>
<key>NSSiriUsageDescription</key>
<string>应用需要您的同意才能访问Siri</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>应用需要您的同意,才能访问语音识别</string>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UILaunchStoryboardName</key>
@@ -59,5 +73,7 @@
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>keychain-access-groups</key>
<array/>
</dict>
</plist>

View File

@@ -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,
),
);

View File

@@ -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)),
),
),
],
);

View File

@@ -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<void> _initSystem() async {
WidgetsFlutterBinding.ensureInitialized();
@@ -38,7 +38,8 @@ Future<void> _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<void> _initSystem() async {
systemNavigationBarContrastEnforced: false,
),
);
await ThemeUtil().buildTheme();
}
Future<Locale> _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<int>('themeMode')!],
getPages: AppPages.routes,

View File

@@ -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<String> videoPathList, required int initialIndex}) {
state.videoPathList = videoPathList;
state.videoIndex = initialIndex.obs;
}
double get aspectRatio => _videoPlayerController.value.aspectRatio;
Completer<void>? _initCompleter;
@override
void onInit() {
state.playable = Playlist(
List.generate(state.videoPathList.length, (index) {
return Media(state.videoPathList[index]);
}),
index: state.videoIndex.value,
);
_initCompleter = Completer<void>();
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<void> 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<void> nextVideo() async {
if (state.videoIndex.value < state.videoPathList.length - 1) {
state.videoIndex.value++;
await _videoPlayerController.dispose();
chewieController.dispose();
initVideo();
}
}
Future<void> previousVideo() async {
if (state.videoIndex.value > 0) {
state.videoIndex.value--;
await _videoPlayerController.dispose();
chewieController.dispose();
initVideo();
}
}
}

View File

@@ -1,14 +1,13 @@
import 'package:get/get.dart';
import 'package:media_kit/media_kit.dart';
class VideoState {
//视频路径
late List<String> videoPathList;
late Playable playable;
//当前位置
late Rx<int> videoIndex;
RxBool isInitialized = false.obs;
VideoState();
}

View File

@@ -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<T?> showVideoView<T>(
BuildContext context,
List<String> 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<String> _videoPathList;
final int _initialIndex;
final String _heroTagPrefix;
String get _tag => Object.hash(_videoPathList, _initialIndex).toString();
const VideoPage({
super.key,
required List<String> 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<VideoLogic>(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<VideoLogic>(
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,
),
),
],
),
),
);

View File

@@ -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"))
}

View File

@@ -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'

View File

@@ -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

View File

@@ -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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
@@ -80,14 +80,15 @@
33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
A9972A3A2DB7E93900715A5D /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/MainMenu.strings"; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
/* 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 = "<group>";
};
@@ -185,11 +186,11 @@
path = Runner;
sourceTree = "<group>";
};
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 = "<group>";
@@ -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 = "<group>";
@@ -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;

View File

@@ -2,11 +2,29 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key><false/>
<key>com.apple.security.cs.allow-jit</key><true/>
<key>com.apple.security.network.server</key><true/>
<key>com.apple.security.network.client</key><true/>
<key>com.apple.security.personal-information.location</key><true/>
<key>com.apple.security.device.audio-input</key><true/>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.assets.movies.read-write</key>
<true/>
<key>com.apple.security.assets.music.read-write</key>
<true/>
<key>com.apple.security.assets.pictures.read-write</key>
<true/>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.device.audio-input</key>
<true/>
<key>com.apple.security.device.camera</key>
<true/>
<key>com.apple.security.files.downloads.read-write</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
<key>com.apple.security.personal-information.location</key>
<true/>
</dict>
</plist>

View File

@@ -6,8 +6,6 @@
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
@@ -20,21 +18,33 @@
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSApplicationCategoryType</key>
<string>public.app-category.lifestyle</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSCameraUsageDescription</key>
<string>应用需要您的同意,才能访问相机</string>
<key>NSHumanReadableCopyright</key>
<string>$(PRODUCT_COPYRIGHT)</string>
<key>NSLocalNetworkUsageDescription</key>
<string>应用需要您的同意,才能访问本地网络</string>
<key>NSLocationUsageDescription</key>
<string></string>
<string>应用需要获取您的定位以记录位置</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSMicrophoneUsageDescription</key>
<string>Some message to describe why you need this permission</string>
<string>应用需要访问您的麦克风来录音</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>This app needs access to location.</string>
<string>应用需要访问您的相册以获取照片</string>
<key>NSPhotoLibraryUsageDescription</key>
<string></string>
<string>应用需要您的同意,才能访问相册</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>UTImportedTypeDeclarations</key>
<array>
<dict/>
</array>
</dict>
</plist>

View File

@@ -2,11 +2,29 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key><false/>
<key>com.apple.security.cs.allow-jit</key><true/>
<key>com.apple.security.network.server</key><true/>
<key>com.apple.security.network.client</key><true/>
<key>com.apple.security.personal-information.location</key><true/>
<key>com.apple.security.device.audio-input</key><true/>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.assets.movies.read-write</key>
<true/>
<key>com.apple.security.assets.music.read-write</key>
<true/>
<key>com.apple.security.assets.pictures.read-write</key>
<true/>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.device.audio-input</key>
<true/>
<key>com.apple.security.device.camera</key>
<true/>
<key>com.apple.security.files.downloads.read-write</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
<key>com.apple.security.personal-information.location</key>
<true/>
</dict>
</plist>

View File

@@ -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";

View File

@@ -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"

View File

@@ -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:

157
rust/Cargo.lock generated
View File

@@ -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",
]

View File

@@ -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)'] }

27
rust/src/api/argon2.rs Normal file
View File

@@ -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<String> {
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()
}
}

View File

@@ -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<String>,
) -> Result<Vec<Keyword>> {
) -> Result<Vec<JiebaKeyword>> {
let jieba = Self::get_instance()?;
let tfidf = jieba
.tfidf
@@ -103,7 +103,7 @@ impl JiebaRs {
text: String,
top_k: usize,
allowed_pos: Vec<String>,
) -> Result<Vec<Keyword>> {
) -> Result<Vec<JiebaKeyword>> {
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<jieba_rs::Keyword>) -> Vec<Keyword> {
fn convert_keywords(keywords: Vec<jieba_rs::Keyword>) -> Vec<JiebaKeyword> {
keywords
.into_iter()
.map(|k| Keyword {
.map(|k| JiebaKeyword {
keyword: k.keyword,
weight: k.weight,
})

View File

@@ -4,4 +4,5 @@ pub mod kmp;
pub mod font;
pub mod aes;
pub mod zip;
pub mod jieba;
pub mod jieba;
pub mod argon2;

View File

@@ -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::SseCodec, _, _>(
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 = <String>::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::SseCodec, _, _>(
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 = <String>::sse_decode(&mut deserializer);
let api_password = <String>::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::SseCodec, _>(
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 = <RustOpaqueMoi<
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaKeyword>,
>>::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::SseCodec, _>(
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 = <RustOpaqueMoi<
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaKeyword>,
>>::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::SseCodec, _>(
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 = <RustOpaqueMoi<
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaKeyword>,
>>::sse_decode(&mut deserializer);
let api_keyword = <String>::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::SseCodec, _>(
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 = <RustOpaqueMoi<
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaKeyword>,
>>::sse_decode(&mut deserializer);
let api_weight = <f64>::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::SseCodec, _>(
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 = <RustOpaqueMoi<
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<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, 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::SseCodec, _>(
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 = <RustOpaqueMoi<
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<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, 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::SseCodec, _>(
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 = <RustOpaqueMoi<
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Keyword>,
>>::sse_decode(&mut deserializer);
let api_keyword = <String>::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::SseCodec, _>(
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 = <RustOpaqueMoi<
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Keyword>,
>>::sse_decode(&mut deserializer);
let api_weight = <f64>::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<AesEncryption>
);
flutter_rust_bridge::frb_generated_moi_arc_impl_value!(
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Argon2Rs>
);
flutter_rust_bridge::frb_generated_moi_arc_impl_value!(
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<FontReader>
);
@@ -1105,10 +1180,10 @@ flutter_rust_bridge::frb_generated_moi_arc_impl_value!(
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<ImageCompress>
);
flutter_rust_bridge::frb_generated_moi_arc_impl_value!(
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaRs>
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaKeyword>
);
flutter_rust_bridge::frb_generated_moi_arc_impl_value!(
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Keyword>
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaRs>
);
flutter_rust_bridge::frb_generated_moi_arc_impl_value!(
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Kmp>
@@ -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 = <RustOpaqueMoi<
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Argon2Rs>,
>>::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 = <RustOpaqueMoi<
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaRs>,
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaKeyword>,
>>::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 = <RustOpaqueMoi<
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Keyword>,
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaRs>,
>>::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<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<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 = <usize>::sse_decode(deserializer);
return decode_rust_opaque_moi(inner);
}
}
impl SseDecode
for RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<FontReader>>
{
@@ -1247,7 +1342,9 @@ impl SseDecode
}
}
impl SseDecode for RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaRs>> {
impl SseDecode
for RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<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 = <usize>::sse_decode(deserializer);
@@ -1255,7 +1352,7 @@ impl SseDecode for RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpa
}
}
impl SseDecode for RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Keyword>> {
impl SseDecode for RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<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 = <usize>::sse_decode(deserializer);
@@ -1328,13 +1425,13 @@ impl SseDecode for i32 {
}
}
impl SseDecode for Vec<Keyword> {
impl SseDecode for Vec<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 len_ = <i32>::sse_decode(deserializer);
let mut ans_ = vec![];
for idx_ in 0..len_ {
ans_.push(<Keyword>::sse_decode(deserializer));
ans_.push(<JiebaKeyword>::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<FrbWrapper<AesEncryption>> for AesEncrypt
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for FrbWrapper<Argon2Rs> {
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<Argon2Rs> {}
impl flutter_rust_bridge::IntoIntoDart<FrbWrapper<Argon2Rs>> for Argon2Rs {
fn into_into_dart(self) -> FrbWrapper<Argon2Rs> {
self.into()
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for FrbWrapper<FontReader> {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
@@ -1644,6 +1765,21 @@ impl flutter_rust_bridge::IntoIntoDart<FrbWrapper<ImageCompress>> for ImageCompr
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for FrbWrapper<JiebaKeyword> {
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<JiebaKeyword> {}
impl flutter_rust_bridge::IntoIntoDart<FrbWrapper<JiebaKeyword>> for JiebaKeyword {
fn into_into_dart(self) -> FrbWrapper<JiebaKeyword> {
self.into()
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for FrbWrapper<JiebaRs> {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
@@ -1659,21 +1795,6 @@ impl flutter_rust_bridge::IntoIntoDart<FrbWrapper<JiebaRs>> for JiebaRs {
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for FrbWrapper<Keyword> {
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<Keyword> {}
impl flutter_rust_bridge::IntoIntoDart<FrbWrapper<Keyword>> for Keyword {
fn into_into_dart(self) -> FrbWrapper<Keyword> {
self.into()
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for FrbWrapper<Kmp> {
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) {
<RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Argon2Rs>>>::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) {
<RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaKeyword>>>::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) {
<RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Keyword>>>::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<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Argon2Rs>>
{
// 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();
<usize>::sse_encode(ptr, serializer);
<i32>::sse_encode(size, serializer);
}
}
impl SseEncode
for RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<FontReader>>
{
@@ -1843,7 +1982,9 @@ impl SseEncode
}
}
impl SseEncode for RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaRs>> {
impl SseEncode
for RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaKeyword>>
{
// 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<flutter_rust_bridge::for_generated::RustAutoOpa
}
}
impl SseEncode for RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Keyword>> {
impl SseEncode for RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaRs>> {
// 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<Keyword> {
impl SseEncode for Vec<JiebaKeyword> {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<i32>::sse_encode(self.len() as _, serializer);
for item in self {
<Keyword>::sse_encode(item, serializer);
<JiebaKeyword>::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::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<AesEncryption>>::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::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Argon2Rs>>::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::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Argon2Rs>>::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::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<ImageCompress>>::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::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaKeyword>>::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::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaKeyword>>::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::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaRs>>::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::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Keyword>>::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::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Keyword>>::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,

View File

@@ -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);
}
}

View File

@@ -1,2 +1,3 @@
mod aes_test;
mod kmp_test;
mod argon2_test;

View File

@@ -15,17 +15,15 @@
#include <file_selector_windows/file_selector_windows.h>
#include <flutter_inappwebview_windows/flutter_inappwebview_windows_plugin_c_api.h>
#include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h>
#include <fvp/fvp_plugin_c_api.h>
#include <gal/gal_plugin_c_api.h>
#include <geolocator_windows/geolocator_windows.h>
#include <isar_flutter_libs/isar_flutter_libs_plugin.h>
#include <local_auth_windows/local_auth_plugin.h>
#include <media_kit_libs_windows_video/media_kit_libs_windows_video_plugin_c_api.h>
#include <media_kit_video/media_kit_video_plugin_c_api.h>
#include <permission_handler_windows/permission_handler_windows_plugin.h>
#include <record_windows/record_windows_plugin_c_api.h>
#include <share_plus/share_plus_windows_plugin_c_api.h>
#include <url_launcher_windows/url_launcher_windows.h>
#include <volume_controller/volume_controller_plugin_c_api.h>
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"));
}

View File

@@ -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