(원본) https://medium.com/flutter/introducing-flutter-3-5eb69151622f#a570
다트의 변화로는
boilerplate를 줄이고
가독성을 높이고
RISC-V(리스크 파이브)를 지원한다.
(리스크 파이브는 오픈소스로 누구나 무료로 사용할 수 있고, 수정할 수 있어서
리스크 파이브를 지원한다는건 ARM이 독점되는걸 대응하고 무료로 사용하고 수정한다는 이점을 살리겠다는 뜻으로 볼 수 있다.)
파이어베이스 개선
Flutter 크래시 클러스터링을 개선하여 더 빠르게 분류하고 우선 순위를 지정하고 수정할 수 있게되었다.
(원본)https://medium.com/flutter/whats-new-in-flutter-3-8c74a5bc32d0#fa77
지난 버전에서는 Windows지원을 했는데 Flutter 3에서는 추가로
macOS 와 Linux앱을 지원한다.
이로써 모든 데스크탑 플랫폼에서 생산이 가능.
PlatformMenuBar 위젯을 사용하여 macOS 메뉴에 있는 항목들을 컨트롤 할수있다.
한국어, 중국어, 일본어 같은 IME를 사용하는 언어를 포함해서 국제적인 텍스트들을 지원한다.
Flutter 3부터 Flutter macOS 데스크탑 앱은
Intel 기반 Mac과 최신 Apple Silicon 장치 모두를 기본적으로 지원하는 범용 바이너리로 구축.
Windows 7/8에 대한 플러터 앱 지원은 계속되지만 이전버전들은 Microsoft에서 더이상 지원하지 않으니 Windows 10 개발 환경을 권장
모바일 업데이트
폴더블 단말에서 활용할수있는 위젯들도 나오고 그중에서 주로 화면정보나 화면크기를 알아낼때 사용하는 MediaQuery에 속성이 추가되었고
MediaQuery : 접힌부분, 접힌여부, 잘린부분에 대한 상태 추가됨
DisplayFeatureSubScreen 이라는 위젯도 추가되었는데 상태가 HalfOpened 즉, 반만 열렸을때(폴더블 접은상태일때) DisplayFeature라는 속성이 화면이 겹치지않게 분할해주는 위젯으로 보인다.
아이폰 13프로와 아이패드 프로를 포함해서 iOS 단말들에 대해 다양한 주사율을 지원한다. 이전에 60hz로 제한되어있던걸 120hz로 렌더링 가능.
iOS 앱 출시를 단순화하기 위해 flutter build ipa 명령에 새로운 옵션을 추가.
- TestFlight 또는 App Store에 배포할 준비가 되면 flutter build ipa를 실행하여 Xcode 아카이브(.xcarchive 파일)와 앱 번들(.ipa 파일)을 빌드.
- 앱 번들이 빌드되면 Apple Transport macOS 앱을 통해 또는 xcrun altool을 사용하여 명령줄에서 Apple에 업로드.
새 프로젝트를 생성하면 이제 최신 버전의 Gradle 및 Android Gradle 플러그인을 사용.
기존 프로젝트의 경우 Gradle은 7.4로, Android Gradle 플러그인의 경우 7.1.2로 수동으로 올려야함.
지난 2월 2.10 릴리즈때 언급했었음.
이 변경 사항은 iPhone 4S, iPhone 5, iPhone 5C 2세대 및 iPad 4세대 단말에 영향이있을거고 Flutter 3는 이 단말들을 지원하는 마지막 안정적인 릴리즈.
웹 업데이트
대부분의 Chromium 기반 브라우저(Chrome, Edge,Samsung Browser 등)에 ImageDecoder API 추가됨.
방식 : 브라우저의 내장 이미지 코덱을 사용하여 기본 스레드에서 비동기식으로 이미지를 디코딩.
효과 : 이미지 디코딩 속도가 2배 빨라지고 메인 스레드를 차단하지 않으므로 이전에 이미지로 인해 발생했던 버벅거림이 모두 제거됨.
새로운 생명주기 API는 호스팅 HTML 페이지에서 Flutter 앱의 부트스트랩 프로세스를 제어할 수 있고 Lighthouse가 앱의 성능을 분석하는 데 도움이 된다.
아래 상황에서 자주 쓰임.
- splash screen.
- loading indicator.
- 플러터앱 시작되기 전에 보여주는 순수 HTML 랜딩 페이지
툴 업데이트
link 패키지 버전 2.0 출시됨
Impeller란 버벅거림을 해결한 iOS 렌더링 백엔드. (아직 실험단계)
방식 : Impeller란 앱이 실행되는 동안 컴파일되지 않도록 엔진 빌드 시 더 작고 단순한 버벅거림의 주요 원인이었던 셰이더 세트를 미리 컴파일한다.
사용하려면? : —-enable-impeller 명령어 사용하거나 Info.plist 에 있는 FLTEnableImpeller 사용을 true로 한다.
google_mobile_ads 패키지 사용시 페이지 간 스크롤 및 전환 성능이 향상되었다.
기타
Flutter 3는 Material Design 3 지원한다.
Material 3에 업데이트된 새로운 기능 많이 활용해보세요
메터리얼 라이브러리인 ThemeData를 사용할때 copyWith, lerp 같은 메서드를 다시 구현하는 대신 ThemeData를 지정할 수 있습니다.
(코드예시 나중에 추가 예정)
주요변경 세가지