onSliderChanged(double val) 함수는 슬라이더의 값이 변경될 때 호출되어, 슬라이더의 현재 값을 비디오 재생 위치로 변환하고, 비디오를 해당 위치로 이동시키는 역할을 합니다. 이를 하나씩 분해해서 설명하겠습니다.
onSliderChanged(double val) {
final position = Duration(seconds: val.toInt());
videoPlayerController.seekTo(position);
}
onSliderChanged는 슬라이더 값 변경 시 호출되는 콜백 함수입니다.val은 슬라이더가 움직이면서 전달되는 값으로, double 타입입니다.0.0에서 비디오의 전체 길이(초 단위, max 속성)까지입니다.final position = Duration(seconds: val.toInt());
val.toInt()를 사용하여 double 값을 정수로 변환합니다. 이는 비디오 위치를 초 단위로 다루기 위해 필요합니다.12.5라면, toInt()를 통해 12초로 변환됩니다.Duration 객체를 생성합니다.Duration은 시간 간격을 나타내는 Flutter 클래스입니다.Duration(seconds: 12)는 12초를 나타냅니다.videoPlayerController.seekTo(position);
seekTo 메서드는 비디오 재생 위치를 특정 위치로 이동시킵니다.Duration 객체를 전달받습니다.position을 전달하여 비디오를 해당 시간으로 이동시킵니다.seekTo(Duration(seconds: 30))을 호출해 비디오를 30초로 이동시킵니다.onSliderChanged는 _Bottom 클래스에서 Slider의 onChanged 속성과 연결됩니다:
Slider(
value: position.inSeconds.toDouble(),
max: maxposition.inSeconds.toDouble(),
onChanged: onSliderChanged, // 슬라이더 움직임에 따라 호출
),
onChanged가 호출되며, 현재 슬라이더 값을 onSliderChanged로 전달합니다.onSliderChanged는 슬라이더 값을 Duration으로 변환하고, 비디오 컨트롤러의 seekTo를 호출하여 비디오 재생 위치를 업데이트합니다.Slider의 onChanged가 호출됩니다.double)이 onSliderChanged 함수로 전달됩니다.onSliderChanged는:Duration 객체로 변환.seekTo를 호출해 해당 시간으로 비디오 재생 위치를 이동.만약 슬라이더의 max 값이 60이고, 현재 슬라이더 값이 30.5라면:
1. onSliderChanged 호출 시 val은 30.5.
2. Duration(seconds: val.toInt())는 Duration(seconds: 30)으로 변환.
3. videoPlayerController.seekTo(Duration(seconds: 30))가 실행되어 비디오가 30초 위치로 이동.
이 방식으로 사용자는 슬라이더를 통해 비디오의 재생 위치를 직관적으로 조작할 수 있습니다.