Files
fl-query/packages/fl_query/lib/fl_query.dart
T
2022-12-16 21:52:25 +06:00

60 lines
2.0 KiB
Dart

library fl_query;
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:hive_flutter/hive_flutter.dart';
import 'package:path/path.dart'
if (dart.library.html) 'package:hive_flutter/src/stub/path.dart'
as path_helper;
export 'src/infinite_query.dart';
export 'src/infinite_query_builder.dart';
export 'src/query.dart';
export 'src/query_bowl.dart';
export 'src/query_builder.dart';
export 'src/mutation.dart';
export 'src/mutation_builder.dart';
export 'src/always_online_connectivity.dart';
export 'src/models/infinite_query_job.dart';
export 'src/models/query_job.dart';
export 'src/models/mutation_job.dart';
import 'package:path_provider/path_provider.dart';
export 'src/utils.dart' show isShallowEqual, getVariable;
late final kFlQueryBoxKey;
/// `cacheKey`: An unique key to identify the cache of fl_query for this
/// application
///
/// `cacheSubDirectory`: The sub directory to store the cache file
///
/// `encryptionKey`: The encryption key to encrypt the cache of fl_query
///
/// If not provided then the cache won't be encrypted.
/// The encryption key must be a list of 32 integers
///
/// You can use [Random.secure().nextBytes(32)] to generate a random encryption key.
/// And store that key in a secure storage like
/// [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage)
/// for securely storing the encryption key when your application is closed.
Future<void> initializeFlQuery({
required String cacheKey,
List<int>? encryptionKey,
String? cacheSubDirectory,
}) async {
WidgetsFlutterBinding.ensureInitialized();
if (kIsWeb) return;
final appDir = await getApplicationDocumentsDirectory();
Hive.init(
path_helper.join(appDir.path, cacheSubDirectory),
backendPreference: HiveStorageBackendPreference.webWorker,
);
kFlQueryBoxKey = cacheKey + "-fl_query";
await Hive.openLazyBox<String>(
kFlQueryBoxKey,
encryptionCipher:
encryptionKey != null ? HiveAesCipher(encryptionKey) : null,
);
}