readFile<T> method

Future<T> readFile<T>({
  1. required String identifier,
  2. required FileReader<T> reader,
})

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());
  }
}