stopRecording method

Future<RecordingSession?> stopRecording()

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