PHpullh

PRACTICAL LANGUAGE GUIDE

Dart는 하나의 제품 팀이 iOS·Android를 함께 빠르게 검증할 때 실용적이다

Dart와 Flutter의 크로스플랫폼 제품 개발, 상태 관리, 비동기 처리와 면접 준비를 정리한 실무 가이드입니다.

DartFlutter 제품팀, 빠른 모바일 MVP·운영 팀

시스템에서 이렇게 활용하세요

화면은 가능한 한 순수한 상태의 함수로 만들고, 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

Dart 면접에서 설명할 질문

Future와 Stream은 어떻게 구분하나요?

Future는 한 번 도착하는 결과, Stream은 시간에 따라 여러 번 변하는 이벤트입니다. 요청 하나에는 Future, 소켓·검색어·실시간 데이터에는 취소와 backpressure 전략을 고려한 Stream을 선택한다고 답합니다.

Flutter에서 rebuild가 많으면 항상 문제인가요?

아닙니다. rebuild 자체는 설계된 동작입니다. 비싼 계산·큰 하위 트리·불필요한 상태 범위가 문제인지 측정하고, const·작은 위젯·선택적 구독으로 변경 범위를 줄이는 것이 핵심입니다.