개발자

flutter 위젯 빌드 2번 호출되는 현상

2024년 03월 03일조회 136

안녕하십니까 flutter로 졸업 작품 앱 개발 중인 대학생입니다! 개발 도중 widget build가 2번씩 되는 현상이 발생합니다. build 내부에서 위젯이 return 되기 이전에 특정 함수가 호출되도록 했는데, 그 함수가 2번씩 호출됩니다. 로직에는 아무런 문제가 없구요, 혹시 몰라 디버깅 로그도 찍어봤는데 역시나 2번씩 찍힙니다. 함수가 페이지를 호출하는거라 사실상 같은 페이지 2개가 호출되는 문제라 타격이 큽니다.. 비슷한 문제를 해결한 경험이 있으신 분들의 조언을 듣고 싶습니다!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

profile picture

익명

작성자

2024년 03월 04일

setState 사용으로 인한 위젯 재빌드 현상이었습니다!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 03월 03일

Flutter에서 위젯의 빌드가 두 번 호출되는 현상은 대부분 상태 관리와 관련이 있습니다. 이는 몇가지 경우에 발생할 수 있는데 여기 몇 가지 케이스를 소개해드리겠습니다. 1. **상태 변화에 의한 재빌드** : Stateful 위젯에서 setState 함수를 호출하면 Flutter 엔진은 해당 위젯을 다시 그립니다. 즉, build 메소드가 다시 실행됩니다. 따라서 만약 빌드를 트리거하는 setState 호출이 2번 일어난다면 build 메소드도 두 번 호출될 가능성이 있습니다. 2. **위젯 트리의 변경**: Flutter는 Widget Tree 구조상 변경이 생긴 부분만을 재구성하기 때문에, 특정 상위 요소(Widget)가 변경되면 하위 요소들도 재구성됩니다. 만약 이 와중에 부모 위젯이나 상위 요소들의 변경으로 인해 자식 위젯의 Build 메서드가 추가로 호출된다면, 같은 화면 내에서 Build 메서드가 여러번 호출될 수 있습니다. 3. **Hot Reload/Hot Restart**: Hot Reload/Hot Restart 과정에서 모든 위젯은 리빌딩됩니다. 개발 중일 때 원치 않게 비효율적으로 동작을 볼 수 있으나, 실제 사용자에게 배포할 시에는 해당 현상은 발생하지 않습니다. 함수 호출이 build 메서드 내부에서 실행되어 이러한 현상이 일어난다면 함수를 호출하는 위치나 방식을 변경하여 해결해 볼 수 있습니다. 예를 들어, FutureBuilder나 StreamBuilder와 같은 위젯을 사용하면 비동기 작업을 더 효과적으로 관리할 수 있습니다. 혹은 initState, didChangeDependencies 등의 Lifecycle Method를 활용하는 것도 방법입니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!