finish method
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);
}