Flutter 3.0 업데이트 요약

메모하는 개발자·2022년 5월 17일
4

Flutter메모

목록 보기
2/7

Article1.

(원본) https://medium.com/flutter/introducing-flutter-3-5eb69151622f#a570

  • Flutter 3부터 macOS 와 Linux앱을 스테이블하게 지원함으로써 모든 데스크탑 플랫폼에서 생산이 가능해졌다.
  • Flutter3에서는 Material You도 지원 한다.
    (Material You란? 사용자가 디바이스에서 배경 테마를 지정하면 모든앱과 배경화면에 적용되게 해준다.)
    https://www.androidpolice.com/everything-we-love-about-material-you/
  • Flutter macOS 데스크탑 앱은 Intel 기반 Mac과 최신 Apple Silicon 장치 모두를 기본적으로 지원하는 범용 바이너리로 구축.
    (Apple Silicon이란? 프로세스 칩인데 애플이 설계한 칩 체제와 프로세서를 Apple Silicon이라고 부른다.)
  • 다트의 변화로는
    boilerplate를 줄이고
    가독성을 높이고
    RISC-V(리스크 파이브)를 지원한다.
    (리스크 파이브는 오픈소스로 누구나 무료로 사용할 수 있고, 수정할 수 있어서
    리스크 파이브를 지원한다는건 ARM이 독점되는걸 대응하고 무료로 사용하고 수정한다는 이점을 살리겠다는 뜻으로 볼 수 있다.)

  • 파이어베이스 개선
    Flutter 크래시 클러스터링을 개선하여 더 빠르게 분류하고 우선 순위를 지정하고 수정할 수 있게되었다.

Article2.

(원본)https://medium.com/flutter/whats-new-in-flutter-3-8c74a5bc32d0#fa77

1. macOS, Linux 지원

지난 버전에서는 Windows지원을 했는데 Flutter 3에서는 추가로
macOS 와 Linux앱을 지원한다.
이로써 모든 데스크탑 플랫폼에서 생산이 가능.

2. Cascading menu와 macOS의 시스템 메뉴바 지원

PlatformMenuBar 위젯을 사용하여 macOS 메뉴에 있는 항목들을 컨트롤 할수있다.

3. 모든 데스크탑 플랫폼에서 모든 언어의 텍스트 입력지원

한국어, 중국어, 일본어 같은 IME를 사용하는 언어를 포함해서 국제적인 텍스트들을 지원한다.

4. macOS - 유니버셜 바이너리 구축

Flutter 3부터 Flutter macOS 데스크탑 앱은
Intel 기반 Mac과 최신 Apple Silicon 장치 모두를 기본적으로 지원하는 범용 바이너리로 구축.

5. Windows 10 개발환경 권장(Windows 7/8 deprecated)

Windows 7/8에 대한 플러터 앱 지원은 계속되지만 이전버전들은 Microsoft에서 더이상 지원하지 않으니 Windows 10 개발 환경을 권장

모바일 업데이트

1. 폴더블 단말 지원

폴더블 단말에서 활용할수있는 위젯들도 나오고 그중에서 주로 화면정보나 화면크기를 알아낼때 사용하는 MediaQuery에 속성이 추가되었고

MediaQuery : 접힌부분, 접힌여부, 잘린부분에 대한 상태 추가됨
DisplayFeatureSubScreen 이라는 위젯도 추가되었는데 상태가 HalfOpened 즉, 반만 열렸을때(폴더블 접은상태일때) DisplayFeature라는 속성이 화면이 겹치지않게 분할해주는 위젯으로 보인다.

2. iOS 다양한 주사율 지원

아이폰 13프로와 아이패드 프로를 포함해서 iOS 단말들에 대해 다양한 주사율을 지원한다. 이전에 60hz로 제한되어있던걸 120hz로 렌더링 가능.

3. 간편화된 iOS 릴리즈방식

iOS 앱 출시를 단순화하기 위해 flutter build ipa 명령에 새로운 옵션을 추가.

  • TestFlight 또는 App Store에 배포할 준비가 되면 flutter build ipa를 실행하여 Xcode 아카이브(.xcarchive 파일)와 앱 번들(.ipa 파일)을 빌드.
  • 앱 번들이 빌드되면 Apple Transport macOS 앱을 통해 또는 xcrun altool을 사용하여 명령줄에서 Apple에 업로드.

4. Gradle version update

새 프로젝트를 생성하면 이제 최신 버전의 Gradle 및 Android Gradle 플러그인을 사용.
기존 프로젝트의 경우 Gradle은 7.4로, Android Gradle 플러그인의 경우 7.1.2로 수동으로 올려야함.

5. 32비트 iOS/iOS 9/iOS 10 지원 종료 예정

지난 2월 2.10 릴리즈때 언급했었음.
이 변경 사항은 iPhone 4S, iPhone 5, iPhone 5C 2세대 및 iPad 4세대 단말에 영향이있을거고 Flutter 3는 이 단말들을 지원하는 마지막 안정적인 릴리즈.

웹 업데이트

1. 이미지 디코딩

대부분의 Chromium 기반 브라우저(Chrome, Edge,Samsung Browser 등)에 ImageDecoder API 추가됨.

방식 : 브라우저의 내장 이미지 코덱을 사용하여 기본 스레드에서 비동기식으로 이미지를 디코딩.
효과 : 이미지 디코딩 속도가 2배 빨라지고 메인 스레드를 차단하지 않으므로 이전에 이미지로 인해 발생했던 버벅거림이 모두 제거됨.

2. 웹앱 생명주기

새로운 생명주기 API는 호스팅 HTML 페이지에서 Flutter 앱의 부트스트랩 프로세스를 제어할 수 있고 Lighthouse가 앱의 성능을 분석하는 데 도움이 된다.

아래 상황에서 자주 쓰임.

  • splash screen.
  • loading indicator.
  • 플러터앱 시작되기 전에 보여주는 순수 HTML 랜딩 페이지

툴 업데이트

1. Updated lint package

link 패키지 버전 2.0 출시됨

2. Performance improvements

  • 안드로이드 단말에서 partial repaint가 가능해졌다.
  • 투명도 애니메이션 퍼포먼스 향상
  • UI 스레드는 이제 Android 및 iOS에서 다른 스레드보다 높은 우선순위로 실행된다. -> 프레임 빌드 타임을 20% 향상
  • 기존 캐시 정책은 조금이라도 작업이 들어가면 캐싱을 다 함 -> 그러면 메모리를 많이 소모해서 
    그림의 랜더링 복잡도를 보고 캐시 할지말지 정하는 정책으로 바뀌었는데 
    퍼포먼스는 그대로 유지하고 메모리 사용을 줄임.

3. Impeller

Impeller란 버벅거림을 해결한 iOS 렌더링 백엔드. (아직 실험단계)

방식 : Impeller란 앱이 실행되는 동안 컴파일되지 않도록 엔진 빌드 시 더 작고 단순한 버벅거림의 주요 원인이었던 셰이더 세트를 미리 컴파일한다.

사용하려면? : —-enable-impeller 명령어 사용하거나 Info.plist 에 있는 FLTEnableImpeller 사용을 true로 한다.

4. Inline ads on android

google_mobile_ads 패키지 사용시 페이지 간 스크롤 및 전환 성능이 향상되었다.

기타

Material 3

Flutter 3는 Material Design 3 지원한다.
Material 3에 업데이트된 새로운 기능 많이 활용해보세요

Theme extensions

메터리얼 라이브러리인 ThemeData를 사용할때 copyWith, lerp 같은 메서드를 다시 구현하는 대신 ThemeData를 지정할 수 있습니다.
(코드예시 나중에 추가 예정)

Breaking Change

주요변경 세가지

0개의 댓글