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

신두shindu님의 프로필 이미지

작성한 질문수

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

마무리쓰

올드_비디오 and 뉴_비디오 보이스 동시 출력됨( 비디오 재생중 onNewVideoPressed 호출시,)

작성

·

352

1

 

비디오 재생중  onNewVideoPressed 호출시, 올드_비디오와 뉴_비디오의 보이스(영상의 소리)가 동시 출력되는 현상이 발생됩니다.

영상은 뉴_비디오 화면이 뜨는데 소리는 올드_비디오 소리가 겹쳐서 같이 나오네요.

onNewVideoPressed함수를 

CustomVideoPlayer state클래스내로 빼고 함수내에

videoController!.pause(); 를 실행 시키면 위와같은 문제는 해결됩니다만, 

이런 두개의 파일이 중복되어 재생(소리한정) 현상이 어디서 나타나는지(video 변수인지, 컨트롤러인지)
모르겠습니다. 


답변 2

1

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

안녕하세요~

Controller가 dispose되지 않아서 생기는 문제로 보입니다.

새로운 동영상 선택하는 함수를 실행할때 controller로 동영상 재생을 정지하는 코드를 추가하시면 될 것 같습니다!

0

저도 같은 현상을 해결하기 위해 작업한 방법을 공유합니다.

didUpdateWidget을 통해 video가 다를경우 initializeController() 를 실행하기전에 videoController를 dispose했습니다.

if(oldWidget.video.path != widget.video.path) { videoController!.dispose(); initializeController(); }

코드팩토리님께서 controller가 dispose되지 않아서 생긴 문제라고 답변해주셔서, 그럼 dispose 하면 되겠구나 해서 위와 같이 작업을 했습니다.

Flutter 생명주기에 대한 이해가 제대로 없는 상태로 진행했기에 다른 문제가 생길 수 있을것 같습니다만, 소리 중복재생 문제는 해결이 됩니다.

혹시 이렇게 작업하여 문제가 생긴다면 알려주시면 감사하겠습니다.

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

안녕하세요.

dispose()를 실행하는것보다는 정지 함수를 실행해서 controller 값은 재활용하는게 좋아보입니다.

일반적으로 dispose()는 메모리에서 확실히 값을 삭제해야할때만 사용됩니다.