123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- import 'dart:convert';
- import 'dart:typed_data';
- import 'package:fis_common/index.dart';
- import 'package:fis_common/logger/logger.dart';
- import 'package:vitalapp/architecture/storage/file_storage_native_and_web.dart';
- import 'package:vitalapp/architecture/values/store_keys.dart';
- import 'package:vitalapp/rpc.dart';
- import 'shared_storage.dart';
- /// 文本存储
- class TextStorage {
- TextStorage({
- required this.fileName,
- this.directory = "",
- });
- final String fileName;
- final String directory;
- FileStorageNativeAndWeb? _fileStorage;
- Future<bool> save(String text) async {
- try {
- final bytes = Uint8List.fromList(utf8.encode(text));
- _fileStorage ??= FileStorageNativeAndWeb.createInstance(directory);
- final result = await _fileStorage!.save(fileName, bytes);
- return result;
- } catch (e) {
- logger.e("TextStorage save text error.", e);
- return false;
- }
- }
- Future<String?> read() async {
- _fileStorage ??= FileStorageNativeAndWeb.createInstance(directory);
- final bytes = await _fileStorage!.read(fileName);
- if (bytes == null || bytes.isEmpty) return null;
- try {
- final str = utf8.decode(bytes);
- return str;
- } catch (e) {
- logger.e("TextStorage convert bytes to string error.", e);
- return null;
- }
- }
- Future<bool> delete() async {
- try {
- _fileStorage ??= FileStorageNativeAndWeb.createInstance(directory);
- final result = await _fileStorage!.delete(fileName);
- return result;
- } catch (e) {
- logger.e("TextStorage clear error.", e);
- return false;
- }
- }
- Future<bool> deleteDirectory() async {
- try {
- _fileStorage ??= FileStorageNativeAndWeb.createInstance(directory);
- final result = await _fileStorage!.deleteDirectory(directory);
- return result;
- } catch (e) {
- logger.e("TextStorage clear error.", e);
- return false;
- }
- }
- }
- ///纯web端的缓存
- class TextStoragePureWeb extends TextStorage {
- TextStoragePureWeb(String fileName) : super(fileName: fileName);
- @override
- Future<String?> read() async {
- final storeKey = _getStoreKey();
- final data = SharedStorageService.ins.getString(storeKey);
- return data;
- }
- @override
- Future<bool> save(String text) async {
- final storeKey = _getStoreKey();
- final saved = await SharedStorageService.ins.setString(storeKey, text);
- return saved;
- }
- String _getStoreKey() => StoreKeys.STORE_TEXTDATA_GEN.format([this.fileName]);
- }
- class TextStorageShellWeb extends TextStorage {
- TextStorageShellWeb(String fileName) : super(fileName: fileName);
- @override
- Future<String?> read() async {
- return await rpc.platform.getText(this.fileName);
- }
- @override
- Future<bool> save(String text) async {
- return await rpc.platform.saveText(this.fileName, text);
- }
- }
|