본문 바로가기

Flutter

FutureBuilder에서 SetState 에 문제가 있을 때

 

FutureBuilder에서 setState를 할때 FutterBuild의 Future 함수가 다시 실행될 때가 있다

 

 

 

 

해당 코드처럼 분명히 2개의 FutureBuilder를 각각 setState하였는데 원하지 않았는데 하나는 값이 변하고 하나는 변하지 않는다.

원인은 Flutter의 생명주기를 보면 알 수 있는데 setState를 하면 해당 위젯의 코드가 build() 부분부터 다시 실행된다.

따라서 FutureBuilder 또한 다시 빌드 되게 된다. 이때 FutureBuilder의 Future에 함수를 사용해서 직접 값을 넣어주면 해당 함수도 다시 실행되게 된다.

 

따라서 이 문제를 해결하려면 직접 함수를 전달해주는게 아니라 함수의 반환 값을 변수에 저장한 후에 FutureBuilder안에 넣어주면된다.