강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

bubble gun님의 프로필 이미지
bubble gun

작성한 질문수

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

7:54 Exception caught...부분 질문이 있습니다.

작성

·

215

0

7:52 에서 2초를 더 안보고 에러가 발생하자 제가 뭔가 잘못 한 줄 알고 혼자서 한 번 고쳐보겠다고 나름 노력을 했습니다...

이렇게 저렇게 찾아보다가 강사님께서 알려주신

currentPosition = const Duration();

의 삽입 말고,

슬라이더 위젯 설정하는 부분의 max, min 값 부분에서

max: maxPosition.inSeconds.toDouble()+1.0;

위와 같이 해결을 하는 방법을 알게 되었습니다.

스택오버플로우 및 기타 커뮤니티에서 음악, 영상 등 파일을 바꾸게 될때 value >=min && value <=max 패일이 발생하면 이런저런 이유로(근데 답변자들 마다 이유들이 다 달랐음) 이렇게 해도 된다. 라는 골자였고 저도 긴가민가 그렇게 해보니 어쨋든 해당 문제가 사라지는 것을 확인했습니다.

그래도 강사님께서 말씀하신게 더 근본적인 이유인 것 같은데,

왜 제가 커뮤니티에서 찾은 방법도 통했는지,

그리고 저런 방법이 통할때의 진짜 원인은 어떤 것인지

궁금합니다.

 

감사합니다.

답변 1

1

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요~

해당 에러가 트리거 될 수 있는 상황은 두가지 상황중 하나입니다.

1) 슬라이더의 min 값보다 현재값이 낮을경우.

2) 슬라이더의 max 값보다 현재값이 높을경우.

어떤 경우일지 확인을 하려면 _SliderBottomWidget의 build 함수에서 currentPosition 값과 maxPosition 값을 출력해보면 됩니다. 일단 첫번째 경우는 절대로 아닙니다. 왜냐하면 0보다 적은 숫자가 입력되는 경우의 수는 없으니까요. 실제로 출력을 해보면 영상을 변경했을때 maxPosition 값이 잠깐 0이 되는 상황이 있는걸 확인할 수 있습니다. 그러니 에러가 나는 상황은 2번 상황이라고 결론지을 수 있을 것 같습니다.

왜 maxPosition이 잠시 0이되는지는 간단합니다. videoController 변수는 비동기로 초기화되고 있습니다. 그렇기때문에 초기화가 아직 덜된 잠깐의 순간동안 최대 영상 길이인 maxPosition 값이 0으로 인식되는겁니다.

답변이 되었기를 바랍니다!

bubble gun님의 프로필 이미지
bubble gun

작성한 질문수

질문하기