finish method

  1. @override
Future<void> finish({
  1. AudioCancellationToken? cancellationToken,
})

Gracefully drains and finalizes accepted frames.

Implementation

@override
Future<void> finish({AudioCancellationToken? cancellationToken}) {
  cancellationToken?.throwIfCancelled();
  if (_status.state == AudioSessionState.finished) {
    return Future<void>.value();
  }
  if (_writeFuture != null) {
    return Future<void>.error(
      StateError('Wait for the current WAV write before finishing.'),
    );
  }
  if (_abortRequested || _abortFuture != null || _status.isTerminal) {
    return Future<void>.error(
      StateError('The WAV file session cannot be finished now.'),
    );
  }
  return _finishFuture ??= _finish(cancellationToken);
}