transaction method

Future<void> transaction(
  1. Future<void> action(), {
  2. List<String>? boxNames,
  3. bool readOnly = false,
})

Implementation

Future<void> transaction(
  Future<void> Function() action, {
  List<String>? boxNames,
  bool readOnly = false,
}) async {
  boxNames ??= _db.objectStoreNames!.toList();
  _txnCache = [];
  await action();
  final cache = List<Future<void> Function(Transaction txn)>.from(_txnCache!);
  _txnCache = null;
  if (cache.isEmpty) return;
  final txn = _db.transaction(boxNames, readOnly ? 'readonly' : 'readwrite');
  for (final fun in cache) {
    fun(txn);
  }
  await txn.completed;
  return;
}