inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

FutureBuilder 대신 StreamBuilder 사용하기

FutureBuilder에서 setstate사용

290

강민성

작성한 질문수 13

0

FutureBuilder를 사용하는 목적이 비동기 함수의 변경 사항을 감지하고 자동으로 ui를 업데이트 해주는 기능으로 알고 있습니다.

그래서 stateless위젯에서도 사용가능한걸로 알고 있습니다.

이번 프로젝트에서는 FutureBuilder를 사용해도 setState가 필요한지 헷갈립니다.

혹시 제가 잘못 알고 있는 건지 아니면 future로 받는 테이블 데이터가 변경 사항이 없어서 그런 건지 궁금합니다!

flutter 클론코딩

답변 2

0

코드팩토리

안녕하세요!

StatelessWidget과 FutureBuilder를 같은 선상에서 비교하는건 무리가 있습니다.

FutureBuilder를 Widget 내부에서 사용하기 때문입니다.

FutureBuilder는 Future의 값의 변화에 따라 builder 함수가 재실행되는 기능을 제공합니다.

StatefulWidget의 setState() 함수는 build 함수를 재실행하는 역할을 합니다.

만약에 setState로 FutureBuilder를 대체 할 수 있다면 대체해도 되고 반대로도 가능합니다.

감사합니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

FutureBuilder를 사용하는 주된 목적은 말씀하신 대로 비동기 작업을 수행하고, 그 결과에 따라 UI를 업데이트하는 것입니다. 일반적으로는 FutureBuilder 내에서 비동기 작업의 결과에 따라 다른 위젯을 보여주기 때문에 별도로 상태를 관리할 필요는 없습니다.

하지만, 특정 상황에서 FutureBuilder가 사용하는 데이터를 다른 곳에서 업데이트하고 싶거나, 비동기 작업의 결과에 따라 상태를 변경시켜야 할 필요가 있다면 setState()를 사용할 수 있습니다. 예를 들어, FutureBuilder가 완료되었을 때 어떤 상태 값에 의존하는 로직이 있다면, 해당 작업을 수행하기 위해 setState()를 사용할 수 있습니다.

그러나, 주의할 점은 setState()를 사용하면 위젯 전체가 다시 빌드되므로, 성능에 영향을 줄 수 있습니다. 또한, FutureBuilder 내부에서 setState()를 호출하는 경우 무한 루프에 빠질 위험이 있으므로, 상태 변경 로직은 적절히 관리되어야 합니다.

결론적으로, FutureBuilder를 사용해도 특정 상황에서 setState()가 필요할 수 있지만, 가능한 한 상태 관리를 최소화하고 FutureBuilder의 기능을 최대한 활용하는 것이 좋습니다. 데이터 변경이 필요한 경우에는 올바른 상태 관리 방법을 적용하는 것이 중요합니다.

198강 (){onTap(e);}의 이해 돕기

0

26

1

video_call 플러그인 설치후 에러 발생

0

45

1

SDK 안드로이드 설치 질문!

0

60

1

코드팩토리 디스코드 링크 다시 부탁드려요~

0

92

1

Webview를 이용해서 URL 상의 페이지 출력 불가

0

70

1

홈스크린 함수를 함축해서 main.dart에 옮기는 문제

0

55

1

플레이스토어

0

59

1

아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?

0

55

1

가이드라인 질문

0

57

0

emulator 에러 환경설정 뭐가 문제 일까요??

0

76

1

emulator 실행 오류

0

93

3

Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련

0

71

1

pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의

0

43

1

setState()를 호출하지 않으면 build가 실행 안되는 건가요?

0

53

1

video_call 플러그인 설치시 에러문제

0

64

1

children 안의 if 문에서 { } 못쓰는 이유?

0

48

1

이렇게 오류가 떠요

0

63

1

AppBar 사용했는데

0

61

2

[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다

0

56

1

StatefulWidget 실습 에러가 발생합니다.[해결완료]

0

63

1

Video Player 프로젝트에 대한 추가 질문

0

53

0

Row위젯이나 column위젯의 위치는 누가 정하나요??

0

42

1

geolocator 오류때문에 개발진행이 불가능입니다

0

63

1

API 관련 이슈

0

86

2