runInIsolate<R> method
Implementation
@protected
Future<R> runInIsolate<R>(FutureOr<R> fn(Adapter adapter)) async {
final storagePath = Directory(storage.path).parent.path;
final internalProvidersMap = _internalProvidersMap!;
final _internalType = internalType;
return await Isolate.run(() async {
late final ProviderContainer container;
try {
container = ProviderContainer(
overrides: [
localStorageProvider.overrideWith(
(ref) => LocalStorage(baseDirFn: () => storagePath),
),
],
);
await container
.read(initializeFlutterData(internalProvidersMap).future);
final adapter = internalProvidersMap[_internalType]!;
return fn(container.read(adapter));
} finally {
for (final provider in internalProvidersMap.values) {
container.read(provider).dispose();
}
container.read(localStorageProvider).dispose();
}
});
}