Cursor

Cursor로 Flutter 앱 개발하기: 실전에서 통한 것과 안 통한 것

DevPilot 2026. 7. 6. 08:27

핵심 요약: Cursor는 Flutter 개발에서도 충분히 강력하지만, Django 같은 백엔드와는 체감 포인트가 다릅니다. 위젯 트리의 반복 구조 덕분에 Tab 자동완성과 UI 보일러플레이트 생성은 탁월한 반면, AI가 낡은 위젯 API나 존재하지 않는 패키지 버전을 제안하는 문제가 상대적으로 잦습니다. 해결책은 Rules에 Flutter/Dart 버전과 상태관리 패턴을 고정하고, 실행 확인(hot reload)을 반드시 사람이 잡는 것입니다.

이 글에서 다루는 내용: Flutter에서 Cursor가 잘하는 것, 자주 겪는 문제와 예방법, Rules 예시, 작업 유형별 워크플로.

Cursor가 Flutter에서 잘하는 것

위젯 트리 작성. Flutter 코드의 대부분은 중첩된 위젯 선언인데, 패턴이 명확해서 Tab이 다음 위젯과 속성을 정확히 예측합니다. Column 안에 Padding, 그 안에 Text의 스타일까지 이어지는 연쇄 완성이 체감 효율의 중심입니다. 화면 단위 생성. "이 모델의 목록 화면을 기존 스타일대로"라고 시키면 화면, 위젯 분리, 라우팅 연결까지 뽑아냅니다. 모델·직렬화 코드. JSON 응답을 붙여넣고 모델 클래스와 fromJson/toJson 생성을 맡기는 작업은 거의 실패가 없습니다. 위젯 테스트. 기존 테스트 스타일을 따라 새 화면의 테스트를 채워줍니다.

자주 겪는 문제 3가지와 예방법

낡은 API 제안. Flutter는 API 변화가 빨라서, AI가 deprecated 위젯이나 옛 문법을 제안하는 경우가 백엔드보다 잦습니다. Rules에 Flutter/Dart 버전을 명시하고, 분석기(analyzer) 경고를 바로바로 처리하는 습관이 필요합니다. 패키지 환각. pubspec.yaml에 존재하지 않는 버전이나 유사 이름 패키지를 추가하는 경우가 있습니다. 의존성 변경은 diff에서 반드시 확인하고 pub.dev에서 실재 여부를 체크하세요. 상태관리 패턴 뒤섞기. 프로젝트는 Riverpod을 쓰는데 AI가 setState나 Bloc 스타일 코드를 섞어오는 문제. 이건 Rules로 거의 완전히 잡힙니다.

Rules 예시 (Flutter 프로젝트)

---
description: Flutter 프로젝트 규칙
globs: ["**/*.dart"]
alwaysApply: false
---

- Flutter 3.x / Dart 3.x 기준 최신 API만 사용 (deprecated 금지)
- 상태관리는 Riverpod만 사용, setState는 단일 위젯 내부로 제한
- 위젯이 80줄을 넘으면 별도 위젯으로 분리
- 새 화면에는 위젯 테스트 포함
- pubspec.yaml 의존성 추가 시 반드시 변경 사유를 설명할 것

Rules 작성법 자체는 별도 글에서 다뤘습니다.

작업 유형별 워크플로

새 화면: 디자인 요구사항을 구체적으로 적어 Agent에 위임 → hot reload로 확인 → 세부 조정은 Tab으로 직접. UI는 "보면서 고치는" 마지막 단계가 반드시 사람 몫입니다. API 연동: 백엔드 응답 예시를 붙여넣고 모델+리포지토리+프로바이더 생성을 한 번에. 리팩토링: 거대 위젯 분리는 Agent가 잘하지만, 분리 기준(어디까지가 한 위젯인가)은 지시에 명시해야 결과가 안정적입니다. 플랫폼 네이티브 이슈: iOS/Android 네이티브 설정(권한, 빌드 설정)은 AI 제안을 참고만 하고 공식 문서로 확인하세요. 이 영역은 환각 빈도가 높습니다.

직접 개발하며 남은 기록

사이드 프로젝트 앱을 Cursor로 개발하면서 가장 좋았던 순간은 지루한 화면 양산 구간이었습니다. 비슷한 구조의 목록/상세 화면 여러 개를 Agent가 기존 스타일대로 찍어내고 저는 hot reload로 확인하며 디테일만 만졌는데, 예전 같으면 며칠 걸릴 분량이 하루로 줄었습니다. 반대로 가장 크게 데인 건 패키지였습니다. Agent가 pubspec에 추가한 패키지가 이름이 비슷한 다른 패키지였고, 빌드 에러의 원인을 찾는 데 한참 걸렸습니다. 그 뒤로 의존성 diff는 무조건 pub.dev에서 확인합니다. Django 백엔드와 비교하면(Django 편 참고) Flutter 쪽이 "생성은 더 화려하고, 검증은 더 필수"라는 인상입니다. UI는 코드가 맞아도 화면이 어색할 수 있으니까요.

자주 묻는 질문 (FAQ)

Q. Cursor에서 hot reload가 되나요?

A. 네. Cursor는 VS Code 포크라서 Flutter/Dart 확장이 그대로 동작합니다. 디버깅, hot reload, 디바이스 선택 모두 VS Code와 동일합니다.

Q. Android Studio 대신 Cursor만으로 Flutter 개발이 가능한가요?

A. 코딩은 충분히 가능합니다. 다만 Android SDK 관리, 에뮬레이터 생성, 네이티브 프로파일링 같은 작업은 Android Studio가 필요할 수 있어 병행하는 경우가 많습니다.

Q. AI가 만든 UI 코드의 품질은 어떤가요?

A. 구조는 준수하지만 시각적 완성도는 별개입니다. 레이아웃이 요구사항과 미묘하게 다른 경우가 많아, 실행 화면을 보며 다듬는 단계를 생략할 수 없습니다.

Q. Flutter 규칙 템플릿도 공개된 게 있나요?

A. 네. awesome-cursor-rules-mdc 저장소와 cursor.directory에 Flutter/Dart 규칙 템플릿이 있습니다. 상태관리 패턴 부분을 자기 프로젝트에 맞게 수정해서 쓰세요.

한눈에 보는 요약

Flutter에서 Cursor의 강점은 위젯 트리 완성과 화면 양산, 약점은 낡은 API·패키지 환각입니다. Rules로 버전과 상태관리 패턴을 고정하고, 의존성 diff와 실행 화면 확인만 사람이 지키면 앱 개발 속도가 확실히 달라집니다.

함께 보면 좋은 글

Cursor로 Django 개발하기: 실전 워크플로
Cursor Rules 설정 방법 (.mdc 가이드)
Cursor Agent 모드는 언제 쓰는 게 좋을까?

참고 자료

Flutter 공식 문서
Cursor Directory (Flutter 규칙 템플릿)