Recent Posts
Recent Comments
반응형
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

오늘도 공부

Flutter 3.32 업데이트 내용 본문

스터디/Flutter

Flutter 3.32 업데이트 내용

행복한 수지아빠 2025. 5. 21. 09:33
반응형

https://medium.com/flutter/whats-new-in-flutter-3-32-40c1086bab6e

 

What’s new in Flutter 3.32

Hot reload on web, native fidelity, and deeper integrations

medium.com

 


📋 목차 미리보기

  1. Flutter 3.32란?
  2. 웹(Web)
    • 웹에서 핫 리로드 실험 기능
    • VS Code와 터미널에서 사용하는 법
    • DartPad에서 핫 리로드 적용
  3. 플랫폼별 주요 업데이트
    • Framework: Expansible, RawMenuAnchor
    • Cupertino: Apple 스타일 “squircle (곡면 스퀴클)”
    • Material: CarouselController, TabBar, SearchAnchor 등
  4. 접근성과 텍스트 입력 개선
  5. 멀티 윈도우 & 데스크탑 스레드 병합
  6. iOS & Android 플랫폼별 변화
    • iOS 붙여넣기 개선
    • Android Kotlin 기반 Gradle 리팩토링
    • 스타일러스 필기(안드로이드)
  7. 엔진(Impeller) 향상
  8. DevTools 및 IDE 개선
    • Flutter Property Editor
    • DevTools 전반 성능 향상
    • Dart Analyzer 개선
  9. AI 연계 기능
    • Firebase AI Logic 출시
    • Firebase AI Monitoring 대시보드
  10. 파괴적 변경점 및 비권장 기능
  11. 마무리 및 업그레이드 방법

1. Flutter 3.32란? ✨

2025년 5월 20일, Flutter 3.32 버전이 정식 릴리즈되었습니다.
이번 업데이트는 웹 핫 리로드, Apple iOS 고유 UI 스타일 구현, 그리고 Firebase를 통한 AI 연계 기능 등 개발자 생산성과 앱 경험을 높이는 핵심 기능들이 대거 추가됐습니다. 개발자 커뮤니티의 활발한 기여로 무려 1024개의 커밋이 포함되었고, 첫 기여자 39명도 참여했답니다 (Medium).


2. 웹(Web)

🔁 웹 핫 리로드 (실험 기능)

드디어 웹에서도 핫 리로드를 사용할 수 있게 되었어요! Flutter 트래커에서 두 번째로 많은 투표를 받은 기능이기도 한데요.
현재 실험 단계이지만, 여러분의 프로젝트에서 직접 사용해보시고 피드백 남겨 주세요. 문제는 GitHub Dart 리포에서 이슈를 제보할 수 있습니다 (Medium).

✅ 사용 방법

VS Code에서 실행하기
launch.json에 아래 설정을 추가하세요:

{
  "name": "Flutter for web (hot reloadable)",
  "type": "dart",
  "request": "launch",
  "program": "lib/main.dart",
  "args": ["-d", "chrome", "--web-experimental-hot-reload"]
}

또한 VS Code 설정에서 "Dart: Flutter Hot Reload On Save"를 활성화하면 저장 시 자동 리로드도 가능해요 (Medium).


터미널에서 실행하기
아래처럼 실행할 수 있습니다:

flutter run -d chrome --web-experimental-hot-reload

실행 중 “r”을 누르면 핫 리로드, “R”을 누르면 핫 리스타트가 가능합니다 (Medium).


DartPad에서 사용하기
Flutter가 감지되는 애플리케이션에서 Reload 버튼이 활성화됩니다. 기본 카운터 앱 샘플로도 테스트할 수 있어요 (Medium).


3. 플랫폼별 주요 업데이트

🧱 Framework: Expansible, RawMenuAnchor 추가

  • Expansible 위젯: 확장/수축 애니메이션을 간편하게 구현할 수 있는 기반 위젯으로, 기존 ExpansionTile과 비슷하나 더 유연하답니다.
  • RawMenuAnchor: 메뉴의 외형을 직접 제어할 수 있는 비스타일 위젯으로, Material 스타일 MenuAnchor의 기반 역할도 합니다 (Medium, Medium).

이러한 구조 리팩토링은 Cupertino와 Material 간 UI 통합과 코드 재사용성을 높여주죠.


🍎 Cupertino: 고품질 iOS 스타일 “Squircle” 도입

iOS 디자인 특징인 **rounded superellipse (squircle)**가 드디어 Flutter에 적용되었어요!
CupertinoAlertDialog와 CupertinoActionSheet가 이 곡면 스퀴클 모양으로 업데이트되었고, 아래 API들이 제공됩니다:

  • RoundedSuperellipseBorder
  • ClipRSuperellipse
  • 저수준 API: Canvas.drawRSuperellipse, Canvas.clipRSuperellipse, Path.addRSuperellipse (Medium).

현재는 iOS·Android에서만 지원되며, 향후 최적화도 계속될 예정입니다.

또한 Cupertino 시트 관련 버그가 해결되고, enableDrag 인자를 통해 바텀 시트 드래그-다운 해제도 제어 가능해졌어요 (Medium).


🛎 Material: 다양한 편의 기능 업그레이드

  • CarouselController: animateToIndex 메서드로 인덱스 기반 매끄러운 내비게이션 가능
  • TabBar: onHover, onFocusChange 콜백 추가
  • SearchAnchor: viewOnOpen, onOpen 콜백 적용
  • CalendarDatePicker: calendarDelegate로 음력, 대체 달력 시스템 등 자유로운 날짜 로직 삽입 가능
  • showDialog, DialogRoute에 animationStyle 추가
  • Divider의 borderRadius 설정 가능
  • 버그 수정: DropdownMenu의 폭 관련, RangeSlider 호버 오버레이 개선 등 (Medium).

4. 접근성 & 텍스트 입력 개선

🌐 접근성 (Accessibility)

  • 시맨틱 트리 컴파일 성능 향상: 최대 80% 개선, 웹에서는 프레임 타임 30% 감소 (Medium).
  • 세밀한 SemanticsRole API: 위젯 트리 전체에 역할 부여 가능 (현재 웹 플랫폼 지원) (Medium).
  • 기타: 스크린리더, 슬라이더, 드롭다운 등 폼 요소의 접근성 향상, Android TalkBack의 링크 인식 개선, Windows 웹 강제 색상 모드 대응 등 (Medium).

⌨ 텍스트 입력

  • iOS에서는 붙여넣기 시 확인 다이얼로그 생략
  • Autocomplete 위젯에 OverlayPortal 적용으로 성능 및 레이아웃 안정화
  • onTapUpOutside 커스터마이징 가능
  • FormField에서 에러 메시지를 커스텀 위젯으로 지정할 수 있게 변화
  • 웹 및 텍스트 선택 기능 안정화 및 성능 향상 (Medium).

5. 멀티 윈도우 & 데스크탑 스레드 병합

  • Canonical 기여로 Linux 데스크탑에서 멀티 윈도우 지원 크게 진전
    • 접근성, 앱 라이프사이클, 포커스, 키보드/마우스/텍스트 입력 이벤트 등 여러 기능 정상화 작업 (Medium).
    • FFI를 통한 엔진 직접 통신 가능 기반 마련
    • Linux에서 래스터 스레드 도입으로 프레임 처리 효율 향상 (Medium).
  • Windows/macOS: UI와 플랫폼 스레드를 병합해 FFI로 윈도우 크기 조정 등 API 호출 가능
    • Windows: wWinMain에 UIThreadPolicy::RunOnPlatformThread 추가
    • macOS: Info.plist에 <key>FLTEnableMergedPlatformUIThread</key><true/> 삽입
    • 향후 기본 활성화 예정 (Medium).

6. iOS & Android 플랫폼별 변화

🍏 iOS

별도 커스텀 메뉴 없는 기본 텍스트 필드에서는 붙여넣기 시 확인 다이얼로그 없이 바로 붙여넣기 가능해졌어요 (커스텀 메뉴 사용하는 경우는 아직 미지원) (Medium).


🤖 Android

  • Gradle 플러그인 Kotlin으로 리팩토링
    • Groovy 기반에서 Kotlin으로 전환하면서 코드의 내성 및 유지보수성·안정성 향상
    • 기능적인 변화는 없으며, 문제가 있다면 이슈 제보 가능 (Medium).
  • 스타일러스 필기 입력 지원 (Scribe/Stylus)
    • Android 14 이상에서 스타일러스로 텍스트필드에 필기 입력 가능
    • 일부 제스처는 아직 개발 중이며, 필요시 TextField.stylusHandwritingEnabled로 비활성화 가능 (Medium).

7. 엔진 개선 (Impeller)

  • Android 9(API 28) 이하 기기는 안정성을 위해 여전히 Skia 렌더러 사용
  • Android 10(API 29) 이상은 Impeller 기본 지원
  • 특정 기기(Vulkan 미지원 기기 등)는 GLES로 폴백 (Medium).
  • 텍스트 렌더링 품질 향상: Glyph atlas 해상도 업그레이드, 부드러운 애니메이션 구현
  • 렌더링 최적화 작업: Conic 곡선 직접 테셀레이션, 페인트 메모리 할당 최소화, Blur 속도 개선, 180도 회전 텍스트 방향 문제 해결 등 (Medium).

8. DevTools 및 IDE 개선

  • Flutter Property Editor 도구 추가: VS Code와 IntelliJ/Android Studio에서 위젯 속성 쉽게 조정 및 문서 확인 가능 (Medium).
  • DevTools 전반 개선:
    • 네트워크 탭 오프라인 지원
    • Deep Links 툴, CPU·메모리 Profiler, Inspector 등 여러 버그 수정
    • 더 빠르고 안정적인 성능 제공 (Medium).
  • Dart Analyzer 개선:
    • doc imports 도입으로 문서 주석에서 외부 요소 참조 가능
    • 퀵 픽스, 리네이밍, Assist 기능 전반 성능 향상 (Medium).
  • Android Studio 내 Gemini 지원 강화
    • Flutter와 Dart 개발에 Gemini AI 기능이 통합되어 IDE 내에서 AI 기반 개발 보조 가능 (Medium).
  • Model Context Protocol (MCP) 지원 준비 중:
    • Dart MCP SDK와 MCP 서버 도구 개발 중
    • 코드 생성, 의존성 관리, 런타임 오류 해결 등 AI 기반 자동화가 가능해집니다 (Medium).

9. AI 연계 기능 추가 🚀

🔍 Firebase AI Logic

  • 기존 firebase_vertexai 패키지를 확장한 firebase_ai 패키지로 변경
  • Gemini API뿐 아니라 Vertex AI 모델까지 하나의 SDK로 사용할 수 있습니다
  • 서버 없이 모바일 앱에서 바로 AI 기능 (텍스트 생성, 이미지 생성 등)을 호출 가능 (Medium).

📊 AI Monitoring Dashboard

  • Firebase 콘솔에 AI API 사용 현황을 시각화해서 보여주는 AI Monitoring 대시보드 추가
  • 소비 패턴, 성능 지표, 오류 탐지 등을 통해 운영과 최적화에 활용할 수 있답니다 (Medium).

10. 파괴적 변경점 및 비권장 기능

  • Android 접근성 announcement 비권장: Android API 36부터 SemanticProperties.liveRegion 사용 권장 (Medium).
  • 다음 6개 패키지 지원 종료: flutter_markdown, ios_platform_images, css_colors, palette_generator, flutter_image, flutter_adaptive_scaffold (Medium).
  • iOS 12, macOS 10.14 지원 종료 예정: Flutter 차기 버전에서 최소 iOS 13 / macOS Catalina 이상 필요.
  • 기타: ExpansionTileController → ExpansibleController 교체, API 이름 일부 변경, Material Theme API 구조 변경, SpringDescription 물리 공식 수정 등 (Medium, Flutter 문서).

자세한 마이그레이션 가이드는 Flutter 공식 브레이킹 변경점 페이지와 dart fix 사용을 추천합니다 (Flutter 문서).


11. 마무리 & 업그레이드 방법

Flutter 3.32는 웹 핫 리로드, 플랫폼 UI 정교화, 멀티 윈도우 지원, AI 통합 도구 등 개발생산성과 사용자 경험을 극대화하는 주요 기능들을 담고 있습니다.

업그레이드 방법은 간단해요:

flutter upgrade

또는 Flutter 2.x 사용자라면 채널 전환 이후 업그레이드 후 시작하시면 됩니다.


 

반응형