Slider 움직여, 동영상 재생위치 바꾸기

pharmDev·2024년 11월 27일

onSliderChanged(double val) 함수는 슬라이더의 값이 변경될 때 호출되어, 슬라이더의 현재 값을 비디오 재생 위치로 변환하고, 비디오를 해당 위치로 이동시키는 역할을 합니다. 이를 하나씩 분해해서 설명하겠습니다.


1. 함수 정의

onSliderChanged(double val) {
  final position = Duration(seconds: val.toInt());
  videoPlayerController.seekTo(position);
}
  • onSliderChanged는 슬라이더 값 변경 시 호출되는 콜백 함수입니다.
  • 매개변수 val은 슬라이더가 움직이면서 전달되는 값으로, double 타입입니다.
    • 이 값은 슬라이더의 현재 위치를 나타냅니다.
    • 슬라이더의 값 범위는 0.0에서 비디오의 전체 길이(초 단위, max 속성)까지입니다.

2. 슬라이더 값 → 재생 위치 변환

final position = Duration(seconds: val.toInt());
  • val.toInt()를 사용하여 double 값을 정수로 변환합니다. 이는 비디오 위치를 초 단위로 다루기 위해 필요합니다.
    • 예: 슬라이더 값이 12.5라면, toInt()를 통해 12초로 변환됩니다.
  • 변환된 초 값을 기반으로 Duration 객체를 생성합니다.
    • Duration은 시간 간격을 나타내는 Flutter 클래스입니다.
    • 예: Duration(seconds: 12)는 12초를 나타냅니다.

3. 비디오 위치 이동

videoPlayerController.seekTo(position);
  • seekTo 메서드는 비디오 재생 위치를 특정 위치로 이동시킵니다.
    • 매개변수로 Duration 객체를 전달받습니다.
    • 여기서는 슬라이더 값으로 계산한 position을 전달하여 비디오를 해당 시간으로 이동시킵니다.
  • 예:
    • 슬라이더가 30초 위치에 있다면, seekTo(Duration(seconds: 30))을 호출해 비디오를 30초로 이동시킵니다.

4. 슬라이더와의 연동

onSliderChanged_Bottom 클래스에서 SlideronChanged 속성과 연결됩니다:

Slider(
  value: position.inSeconds.toDouble(),
  max: maxposition.inSeconds.toDouble(),
  onChanged: onSliderChanged, // 슬라이더 움직임에 따라 호출
),
  • 슬라이더를 움직이면 onChanged가 호출되며, 현재 슬라이더 값을 onSliderChanged로 전달합니다.
  • onSliderChanged는 슬라이더 값을 Duration으로 변환하고, 비디오 컨트롤러의 seekTo를 호출하여 비디오 재생 위치를 업데이트합니다.

5. 전체 동작 과정

  1. 사용자가 슬라이더를 드래그하면 SlideronChanged가 호출됩니다.
  2. 현재 슬라이더 값(double)이 onSliderChanged 함수로 전달됩니다.
  3. onSliderChanged는:
    • 전달받은 값을 초 단위의 Duration 객체로 변환.
    • 비디오 컨트롤러의 seekTo를 호출해 해당 시간으로 비디오 재생 위치를 이동.
  4. 결과적으로, 슬라이더 움직임과 비디오 재생 위치가 동기화됩니다.

예제

만약 슬라이더의 max 값이 60이고, 현재 슬라이더 값이 30.5라면:
1. onSliderChanged 호출 시 val30.5.
2. Duration(seconds: val.toInt())Duration(seconds: 30)으로 변환.
3. videoPlayerController.seekTo(Duration(seconds: 30))가 실행되어 비디오가 30초 위치로 이동.

이 방식으로 사용자는 슬라이더를 통해 비디오의 재생 위치를 직관적으로 조작할 수 있습니다.

profile
코딩을 배우는 초보

0개의 댓글