feat: add secure storage to store user key

This commit is contained in:
ZhuJHua
2025-02-06 18:51:07 +08:00
parent 545891fe55
commit 6ce64f8b46
10 changed files with 118 additions and 42 deletions

View File

@@ -62,9 +62,10 @@ PODS:
- Flutter
- flutter_native_splash (2.4.3):
- Flutter
- flutter_secure_storage (6.0.0):
- Flutter
- fluttertoast (0.0.2):
- Flutter
- Toast
- gal (1.0.0):
- Flutter
- FlutterMacOS
@@ -102,10 +103,10 @@ PODS:
- Flutter
- network_info_plus (0.0.1):
- Flutter
- ObjectBox (4.0.1)
- ObjectBox (4.1.0)
- objectbox_flutter_libs (0.0.1):
- Flutter
- ObjectBox (= 4.0.1)
- ObjectBox (= 4.1.0)
- OrderedSet (6.0.3)
- package_info_plus (0.4.5):
- Flutter
@@ -128,8 +129,6 @@ PODS:
- SDWebImageWebPCoder (0.14.6):
- libwebp (~> 1.0)
- SDWebImage/Core (~> 5.17)
- sensors_plus (0.0.1):
- Flutter
- share_plus (0.0.1):
- Flutter
- shared_preferences_foundation (0.0.1):
@@ -161,7 +160,6 @@ PODS:
- TensorFlowLiteSwift (= 2.12.0)
- TensorFlowLiteSwift/CoreML (= 2.12.0)
- TensorFlowLiteSwift/Metal (= 2.12.0)
- Toast (4.1.1)
- url_launcher_ios (0.0.1):
- Flutter
- video_player_avfoundation (0.0.1):
@@ -184,6 +182,7 @@ 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`)
- gal (from `.symlinks/plugins/gal/darwin`)
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
@@ -203,7 +202,6 @@ DEPENDENCIES:
- record_darwin (from `.symlinks/plugins/record_darwin/ios`)
- rive_common (from `.symlinks/plugins/rive_common/ios`)
- screen_brightness_ios (from `.symlinks/plugins/screen_brightness_ios/ios`)
- sensors_plus (from `.symlinks/plugins/sensors_plus/ios`)
- share_plus (from `.symlinks/plugins/share_plus/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`)
@@ -226,7 +224,6 @@ SPEC REPOS:
- SwiftyGif
- TensorFlowLiteC
- TensorFlowLiteSwift
- Toast
EXTERNAL SOURCES:
app_links:
@@ -251,6 +248,8 @@ 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"
gal:
@@ -289,8 +288,6 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/rive_common/ios"
screen_brightness_ios:
:path: ".symlinks/plugins/screen_brightness_ios/ios"
sensors_plus:
:path: ".symlinks/plugins/sensors_plus/ios"
share_plus:
:path: ".symlinks/plugins/share_plus/ios"
shared_preferences_foundation:
@@ -322,7 +319,8 @@ SPEC CHECKSUMS:
flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99
flutter_keyboard_visibility_temp_fork: 95b2d534bacf6ac62e7fcbe5c2a9e2c2a17ce06f
flutter_native_splash: 6cad9122ea0fad137d23137dd14b937f3e90b145
fluttertoast: 76fea30fcf04176325f6864c87306927bd7d2038
flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13
fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1
gal: baecd024ebfd13c441269ca7404792a7152fde89
geolocator_apple: 1560c3c875af2a412242c7a923e15d0d401966ff
image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
@@ -335,8 +333,8 @@ SPEC CHECKSUMS:
media_kit_video: 1746e198cb697d1ffb734b1d05ec429d1fcd1474
moodiary_rust: e75b3fb63e53d3ba5cfed0edf0b6df5f98c4c5f1
network_info_plus: cf61925ab5205dce05a4f0895989afdb6aade5fc
ObjectBox: 0bc4bb75eea85f6af06b369148b334c2056bbc29
objectbox_flutter_libs: 3af037f7cc35e687acca01f1f6da6cb6c2abc22b
ObjectBox: bf3d4b51075d52868422d5d1f2f2141b1d630d30
objectbox_flutter_libs: e912f15beff5699f1e184dbd2ff6aa5657464e73
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
@@ -347,7 +345,6 @@ SPEC CHECKSUMS:
screen_brightness_ios: 5ed898fa50fa82a26171c086ca5e28228f932576
SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
sensors_plus: 6a11ed0c2e1d0bd0b20b4029d3bad27d96e0c65b
share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
@@ -355,7 +352,6 @@ SPEC CHECKSUMS:
TensorFlowLiteC: 20785a69299185a379ba9852b6625f00afd7984a
TensorFlowLiteSwift: 3a4928286e9e35bdd3e17970f48e53c80d25e793
tflite_flutter: 64b192e11352fe36943ab6656e1d49207f1a5595
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b
volume_controller: ca1cde542ee70fad77d388f82e9616488110942b

View File

@@ -0,0 +1,21 @@
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
class SecureStorageUtil {
static const _storage = FlutterSecureStorage(
aOptions: AndroidOptions(
encryptedSharedPreferences: true,
),
);
static Future<void> setValue(String key, dynamic value) async {
await _storage.write(key: key, value: value);
}
static Future<String?> getValue(String key) async {
return await _storage.read(key: key);
}
static Future<void> remove(String key) async {
await _storage.delete(key: key);
}
}

View File

@@ -17,6 +17,7 @@ import file_picker
import file_selector_macos
import flutter_image_compress_macos
import flutter_inappwebview_macos
import flutter_secure_storage_macos
import gal
import geolocator_apple
import isar_flutter_libs
@@ -53,6 +54,7 @@ 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"))
GalPlugin.register(with: registry.registrar(forPlugin: "GalPlugin"))
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
IsarFlutterLibsPlugin.register(with: registry.registrar(forPlugin: "IsarFlutterLibsPlugin"))

View File

@@ -26,6 +26,8 @@ PODS:
- flutter_inappwebview_macos (0.0.1):
- FlutterMacOS
- OrderedSet (~> 6.0.3)
- flutter_secure_storage_macos (6.1.3):
- FlutterMacOS
- FlutterMacOS (1.0.0)
- gal (1.0.0):
- Flutter
@@ -51,10 +53,10 @@ PODS:
- FlutterMacOS
- network_info_plus (0.0.1):
- FlutterMacOS
- ObjectBox (4.0.1)
- ObjectBox (4.1.0)
- objectbox_flutter_libs (0.0.1):
- FlutterMacOS
- ObjectBox (= 4.0.1)
- ObjectBox (= 4.1.0)
- OrderedSet (6.0.3)
- package_info_plus (0.0.1):
- FlutterMacOS
@@ -100,6 +102,7 @@ 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`)
- FlutterMacOS (from `Flutter/ephemeral`)
- gal (from `Flutter/ephemeral/.symlinks/plugins/gal/darwin`)
- geolocator_apple (from `Flutter/ephemeral/.symlinks/plugins/geolocator_apple/macos`)
@@ -157,6 +160,8 @@ 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
FlutterMacOS:
:path: Flutter/ephemeral
gal:
@@ -223,6 +228,7 @@ SPEC CHECKSUMS:
file_selector_macos: 6280b52b459ae6c590af5d78fc35c7267a3c4b31
flutter_image_compress_macos: e68daf54bb4bf2144c580fd4d151c949cbf492f0
flutter_inappwebview_macos: c2d68649f9f8f1831bfcd98d73fd6256366d9d1d
flutter_secure_storage_macos: 7f45e30f838cf2659862a4e4e3ee1c347c2b3b54
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
gal: baecd024ebfd13c441269ca7404792a7152fde89
geolocator_apple: ccfb79d5250de3a295f5093cd03e76aa8836a416
@@ -235,8 +241,8 @@ SPEC CHECKSUMS:
media_kit_video: fa6564e3799a0a28bff39442334817088b7ca758
moodiary_rust: 2f0ea7e60816f68d22e387a10b460860168eced5
network_info_plus: 21d1cd6a015ccb2fdff06a1fbfa88d54b4e92f61
ObjectBox: 0bc4bb75eea85f6af06b369148b334c2056bbc29
objectbox_flutter_libs: 9d334e5c1008f69d6747d484afccf0860844a006
ObjectBox: bf3d4b51075d52868422d5d1f2f2141b1d630d30
objectbox_flutter_libs: 947b3a4e371d88c3c5b59f6a2e95e108cc072e6b
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
package_info_plus: f0052d280d17aa382b932f399edf32507174e870
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564

View File

@@ -555,7 +555,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.14;
MACOSX_DEPLOYMENT_TARGET = 12.4;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule;
@@ -645,7 +645,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.14;
MACOSX_DEPLOYMENT_TARGET = 12.4;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
@@ -695,7 +695,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.14;
MACOSX_DEPLOYMENT_TARGET = 12.4;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule;

View File

@@ -0,0 +1 @@
71565ef64526201c92e3acbbc968e0ed

View File

@@ -956,10 +956,10 @@ packages:
dependency: "direct main"
description:
name: flutter_markdown
sha256: "46cdcdcd216f15ac04c80e24e814a89ea7143654442c53ba67fec349b4d44565"
sha256: b3ff1ef5fb3924ee02b4d38b974ffae3969d50603e68787684ee9dd45f6f144a
url: "https://pub.dev"
source: hosted
version: "0.7.6"
version: "0.7.6+1"
flutter_native_splash:
dependency: "direct main"
description:
@@ -1008,6 +1008,54 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.7.1"
flutter_secure_storage:
dependency: "direct main"
description:
name: flutter_secure_storage
sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea"
url: "https://pub.dev"
source: hosted
version: "9.2.4"
flutter_secure_storage_linux:
dependency: transitive
description:
name: flutter_secure_storage_linux
sha256: bf7404619d7ab5c0a1151d7c4e802edad8f33535abfbeff2f9e1fe1274e2d705
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"
flutter_secure_storage_platform_interface:
dependency: transitive
description:
name: flutter_secure_storage_platform_interface
sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8
url: "https://pub.dev"
source: hosted
version: "1.1.2"
flutter_secure_storage_web:
dependency: transitive
description:
name: flutter_secure_storage_web
sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9
url: "https://pub.dev"
source: hosted
version: "1.2.1"
flutter_secure_storage_windows:
dependency: transitive
description:
name: flutter_secure_storage_windows
sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709
url: "https://pub.dev"
source: hosted
version: "3.1.2"
flutter_test:
dependency: transitive
description: flutter
@@ -1022,10 +1070,10 @@ packages:
dependency: "direct main"
description:
name: fluttertoast
sha256: "24467dc20bbe49fd63e57d8e190798c4d22cbbdac30e54209d153a15273721d1"
sha256: "8971efe7e59585e9149052e33718d84bca51e806f063d1467622b3dcb2878b6c"
url: "https://pub.dev"
source: hosted
version: "8.2.10"
version: "8.2.11"
font_awesome_flutter:
dependency: "direct main"
description:
@@ -1650,21 +1698,21 @@ packages:
source: hosted
version: "0.5.0"
objectbox:
dependency: "direct main"
dependency: transitive
description:
name: objectbox
sha256: ea823f4bf1d0a636e7aa50b43daabb64dd0fbd80b85a033016ccc1bc4f76f432
sha256: "3d1cb5f9aa564f95c76ba251299f6cb1591c3dd8ff05fd76fa0549d899d9fe31"
url: "https://pub.dev"
source: hosted
version: "4.0.3"
version: "4.1.0"
objectbox_flutter_libs:
dependency: transitive
description:
name: objectbox_flutter_libs
sha256: c91350bbbce5e6c2038255760b5be988faead004c814f833c2cd137445c6ae70
sha256: "4f54ebbd7a3b72f1a5ef4fea76cb01cc36440a4cac1f63bfb6719afba400eedb"
url: "https://pub.dev"
source: hosted
version: "4.0.3"
version: "4.1.0"
octo_image:
dependency: transitive
description:
@@ -2411,18 +2459,18 @@ packages:
dependency: transitive
description:
name: syncfusion_flutter_core
sha256: "213ada2c3b3555a73cb0eb1530d24d27dcf1a0a1555c0f00dd3e1486b01878ad"
sha256: "3c1876b0a245de23de3b17a19e3106fed57d88f4fd2c8dc9bc1976705b1c31d5"
url: "https://pub.dev"
source: hosted
version: "28.2.3"
version: "28.2.4"
syncfusion_flutter_sliders:
dependency: "direct main"
description:
name: syncfusion_flutter_sliders
sha256: "69325466b22cb5d8d2c9163a5f0a60bc04d542c67679899711d0c67f383ad5c9"
sha256: "5d437cfba6cf84c0d25f515fdd87550cc1241536a9c7a7943284bb676a84666b"
url: "https://pub.dev"
source: hosted
version: "28.2.3"
version: "28.2.4"
synchronized:
dependency: "direct main"
description:

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.2+72
version: 2.7.3+73
environment:
sdk: '>=3.6.0'
@@ -40,7 +40,7 @@ dependencies:
shared_preferences: 2.5.1
isar: 4.0.0-dev.14
isar_flutter_libs: 4.0.0-dev.14
fluttertoast: 8.2.10
fluttertoast: 8.2.11
cached_network_image: 3.4.1
audioplayers: 6.1.1
record: 5.2.0
@@ -71,17 +71,16 @@ dependencies:
smooth_page_indicator: 1.2.0+3
unicons: 3.0.0
encrypt: 5.0.3
objectbox: 4.0.3
faker: 2.2.0
flutter_rust_bridge: 2.7.1
syncfusion_flutter_sliders: 28.2.3
syncfusion_flutter_sliders: 28.2.4
flutter_quill_extensions: 11.0.0-dev.7
connectivity_plus: 6.1.2
image_picker_android: 0.8.12+20
video_player_media_kit: 1.0.5
video_player: 2.9.2
chewie: 1.10.0
flutter_markdown: 0.7.6
flutter_markdown: 0.7.6+1
image_picker_platform_interface: 2.10.1
flutter_image_compress: 2.4.0
mime: 2.0.0
@@ -108,12 +107,11 @@ dependencies:
markdown: 7.3.0
flutter_highlight: 0.7.0
synchronized: 3.3.0+3
flutter_secure_storage: 9.2.4
# //llama_cpp_dart: 0.0.8
dev_dependencies:
# flutter_test:
# sdk: flutter
build_runner: 2.4.14
flutter_launcher_icons: 0.14.3
msix: 3.16.8

View File

@@ -14,6 +14,7 @@
#include <fc_native_video_thumbnail/fc_native_video_thumbnail_plugin_c_api.h>
#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 <gal/gal_plugin_c_api.h>
#include <geolocator_windows/geolocator_windows.h>
#include <isar_flutter_libs/isar_flutter_libs_plugin.h>
@@ -45,6 +46,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("FileSelectorWindows"));
FlutterInappwebviewWindowsPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FlutterInappwebviewWindowsPluginCApi"));
FlutterSecureStorageWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin"));
GalPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("GalPluginCApi"));
GeolocatorWindowsRegisterWithRegistrar(

View File

@@ -11,6 +11,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
fc_native_video_thumbnail
file_selector_windows
flutter_inappwebview_windows
flutter_secure_storage_windows
gal
geolocator_windows
isar_flutter_libs