splitAudioTrack method
void
splitAudioTrack(
- dynamic idOrIndex,
- Duration projectTime
)
Implementation
void splitAudioTrack(dynamic idOrIndex, Duration projectTime) {
int index = -1;
if (idOrIndex is String) {
index = audioTracks.indexWhere((a) => a.id == idOrIndex);
} else if (idOrIndex is int) {
index = idOrIndex;
}
if (index == -1 || index >= audioTracks.length) return;
final audio = audioTracks[index];
final splitAt = projectTime == Duration.zero ? _currentGlobalTime.value : projectTime;
if (splitAt <= audio.projectStartTime || splitAt >= audio.projectStartTime + audio.effectiveDuration) {
return;
}
final localSplitPoint = splitAt - audio.projectStartTime;
final originalFileStart = audio.startTime ?? Duration.zero;
final fileSplitPoint = originalFileStart + localSplitPoint;
final originalFileEnd = audio.endTime ?? audio.duration;
audioController.updateAudioTrim(audio.id, originalFileStart, fileSplitPoint);
final newAudio = audio.copyWith(
id: '${audio.id}_split_${DateTime.now().microsecondsSinceEpoch}',
startTime: fileSplitPoint,
endTime: originalFileEnd,
projectStartTime: splitAt,
);
audioController.addAudioTracks([newAudio]);
_saveState();
notifyListeners();
}