stopRecording method
Implementation
Future<RecordingSession?> stopRecording() async {
if (_state == RecordingState.idle) return null;
final endTime = DateTime.now();
final duration = currentRecordingDuration;
await _stopRecordingInternal();
if (_currentRecordingFile != null && _currentRecordingFile!.existsSync()) {
// Update WAV header with correct file size
await _updateWavHeader(_currentRecordingFile!, _audioBuffer.length);
final session = RecordingSession(
id: path.basenameWithoutExtension(_currentRecordingFile!.path),
filePath: _currentRecordingFile!.path,
startTime: _recordingStartTime ?? DateTime.now(),
endTime: endTime,
duration: duration,
sampleRate: _sampleRate,
deviceName: _deviceName,
);
_resetRecordingState();
return session;
}
_resetRecordingState();
return null;
}