Future와 Stream은 어떻게 구분하나요?
Future는 한 번 도착하는 결과, Stream은 시간에 따라 여러 번 변하는 이벤트입니다. 요청 하나에는 Future, 소켓·검색어·실시간 데이터에는 취소와 backpressure 전략을 고려한 Stream을 선택한다고 답합니다.
PRACTICAL LANGUAGE GUIDE
Dart와 Flutter의 크로스플랫폼 제품 개발, 상태 관리, 비동기 처리와 면접 준비를 정리한 실무 가이드입니다.
화면은 가능한 한 순수한 상태의 함수로 만들고, API·저장소·도메인 규칙을 위젯 밖으로 분리하세요. isolate는 무거운 JSON 변환이나 이미지 처리처럼 프레임 드롭을 일으킬 작업에 제한적으로 사용하고, 상태 갱신 경로는 한 방향으로 유지합니다.
두 모바일 플랫폼을 동시에 출시해야 하고 UI 일관성과 실험 속도가 우선이라면 적합합니다. 각 플랫폼의 최신 네이티브 API를 깊게 다루거나 팀이 이미 네이티브 전문 역량을 갖췄다면 Swift/Kotlin이 더 직접적일 수 있습니다.
Future<List<Product>> loadProducts(Api api) async {
final response = await api.get('/products');
if (response.statusCode != 200) {
throw StateError('상품을 불러오지 못했습니다');
}
return (response.json as List)
.map((json) => Product.fromJson(json))
.toList(growable: false);
}비동기 경계에서 HTTP 상태와 데이터 변환 실패를 구분해 UI 상태로 전달합니다.
INTERVIEW PREP
Future는 한 번 도착하는 결과, Stream은 시간에 따라 여러 번 변하는 이벤트입니다. 요청 하나에는 Future, 소켓·검색어·실시간 데이터에는 취소와 backpressure 전략을 고려한 Stream을 선택한다고 답합니다.
아닙니다. rebuild 자체는 설계된 동작입니다. 비싼 계산·큰 하위 트리·불필요한 상태 범위가 문제인지 측정하고, const·작은 위젯·선택적 구독으로 변경 범위를 줄이는 것이 핵심입니다.
NEXT STEP