readFile<T> method
Reads the file previously picked by the user.
Expects a FileInfo.identifier string for identifier
.
Implementation
Future<T> readFile<T>({
required String identifier,
required FileReader<T> reader,
}) async {
_logger.finest('readFile()');
final result = await _channel.invokeMapMethod<String, String>(
'readFileWithIdentifier', {'identifier': identifier});
if (result == null) {
throw StateError('Error while reading file with identifier $identifier');
}
final fileInfo = _resultToFileInfo(result);
final file = _resultToFile(result);
try {
return await reader(fileInfo, file);
} catch (e, stackTrace) {
_logger.warning('Error while calling reader method.', e, stackTrace);
rethrow;
} finally {
unawaited(file.delete());
}
}