~/VibeHandbook
무료 PDF

앱 / 모바일

flutter.dev

Flutter

무엇인가

하나의 레시피를 써두면 스토브마다 다시 쓸 필요 없이 모든 주방에서 같은 요리를 만들어낸다고 상상해보세요. 그것이 바로 크로스플랫폼의 아이디어입니다 — 하나의 코드가 여러 기기에서 돌아가는 것이죠. Flutter는 Dart 언어로 작성된 단일 코드베이스에서 크로스플랫폼 앱을 만드는 Google의 오픈소스 UI「사용자 인터페이스 — 화면에 보이는 부분」 툴킷입니다. 기기 자체의 화면 컨트롤을 재사용하는 방식과 달리, Flutter는 자체 렌더링 엔진으로 모든 픽셀을 직접 그리기 때문에 iOS, Android, 웹, 데스크톱에서 UI가 동일하게 보이고 동작합니다. 풍부한 Material 및 Cupertino 위젯 세트를 기본으로 제공합니다.

강점

  • 하나의 Dart 코드베이스로 iOS, Android, 웹, 데스크톱을 일관된 결과로 타깃팅합니다.
  • 자체 렌더링 엔진 덕분에 어디서나 픽셀 단위로 동일한 UI를 보장합니다.
  • 문서를 편집하면 파일을 다시 열지 않고도 변경 사항이 즉시 나타나는 것처럼, 상태를 유지하는 Hot Reload는 코드 변경을 실행 중인 앱에 바로 보여주어 반복 작업이 극도로 빠릅니다.
  • 크고 정교한 위젯 라이브러리와 강력한 도구.
  • 커스텀하고 브랜드 색이 강하며 애니메이션이 풍부한 인터페이스에 탁월합니다.

트레이드오프

  • 거의 Flutter에서만 쓰이는 언어인 Dart를 배워야 합니다.
  • 엔진이 앱과 함께 배포되므로 앱 바이너리가 더 큽니다.
  • 위젯을 직접 그리기 때문에 플랫폼 네이티브 룩앤필 업데이트가 지연될 수 있습니다.
  • 깊은 플랫폼 통합은 여전히 플러그인을 통한 네이티브(Swift/Kotlin) 코드가 필요합니다.

언제 사용하는가

하나의 팀이 여러 플랫폼에 걸쳐 매우 정교하고 시각적으로 일관된 앱을 출시하고 싶을 때 Flutter를 선택하세요 — 특히 각 OS「Operating System — iOS나 Android 같은 기기의 핵심 소프트웨어」의 정확한 네이티브 위젯을 맞추는 것보다 커스텀 디자인과 매끄러운 애니메이션이 더 중요할 때 그렇습니다.

바이브 코딩 적합성

Flutter는 AI 어시스턴트와 잘 어울립니다. 모든 것이 명확한 트리로 구성된 위젯이고, Hot Reload로 생성된 UI를 몇 초 만에 확인할 수 있기 때문입니다. 모델에게 트리를 작고 집중된 위젯으로 분해하고, 상태 관리를 명시적으로 유지하며(예: 단일 상태 클래스나 잘 알려진 패키지), 성능을 위해 const 생성자를 선호하라고 요청하세요. 프레임워크가 자체 완결적이기 때문에 생성된 코드가 깨지기 쉬운 네이티브 설정에 의존하는 경우가 드뭅니다.

class Counter extends StatefulWidget {
  @override
  State<Counter> createState() => _CounterState();
}

class _CounterState extends State<Counter> {
  int count = 0;
  @override
  Widget build(BuildContext context) => Column(children: [
        Text('Count: $count'),
        ElevatedButton(
          onPressed: () => setState(() => count++),
          child: const Text('Add'),
        ),
      ]);
}