saveKeyStore method
Implementation
Future<File> saveKeyStore(KeyStore store, String password,
{String? name}) async {
name ??= (await store.getKeyPair(0).address).toString();
final port = ReceivePort();
final args = SaveKeyStoreArguments(store, password, name, port.sendPort);
Isolate? isolate = await Isolate.spawn<SaveKeyStoreArguments>(
saveKeyStoreFunction, args,
onError: port.sendPort, onExit: port.sendPort);
StreamSubscription? sub;
var completer = Completer<File>();
sub = port.listen((data) async {
if (data != null) {
if (data is String) {
logger.info(data);
var location = File(path.join(walletPath!.path, name));
await location.writeAsString(data);
completer.complete(location);
} else {
throw data;
}
await sub?.cancel();
if (isolate != null) {
isolate!.kill(priority: Isolate.immediate);
isolate = null;
}
}
});
return completer.future;
}