syncKeys method
Sync keys to the backpack instance.
Implementation
Future<void> syncKeys(dynamic keys) async {
Future<List<Object?>> Function() keysToSync = await keys();
List finalKeys = await keysToSync();
if (finalKeys.isEmpty) return;
final List<Future> pending = [];
Map<String, String>? raw;
for (var key in finalKeys) {
if (key is Future Function(bool)) {
pending.add(key(true));
continue;
}
if (key is! String) continue;
raw ??= await NyStorage.readAll();
final String? stored = raw[key];
dynamic keyValue = stored == null
? null
: NyStorage.decodeRaw(
stored,
legacyRuntimeType: raw['${key}_runtime_type'],
);
Backpack.instance.save(key, keyValue);
}
if (pending.isNotEmpty) await Future.wait(pending);
}