Pelajari lebih dalam tentang rilis terbaru kami, termasuk macOS dan Linux stabil, peningkatan performa, dan banyak lagi!
Rilis stabil Flutter sudah datang kembali – dan kami sangat antusias bisa mengumumkan Flutter 3! Baru tiga bulan yang lalu, kami mengumumkan dukungan Flutter untuk Windows. Hari ini, kami sangat antusias mengumumkan bahwa selain Windows, Flutter sekarang stabil untuk macOS dan Linux!
Terima kasih atas kerja keras kontributor Flutter, kami telah menggabungkan 5248 permintaan pull!
Kami punya banyak hal menarik yang akan diumumkan sebagai bagian dari rilis ini, termasuk update dukungan Flutter untuk macOS dan Linux, peningkatan performa yang signifikan, update seluler dan web – dan banyak lagi! Selain itu, kami juga punya berita tentang pengurangan dukungan untuk versi Windows lama, dan daftar ringkas tentang perubahan yang dapat menyebabkan gangguan. Jadi, mari kita langsung menuju intinya!
Siap diproduksi di semua platform desktop
Menu berjenjang dan dukungan untuk panel menu sistem macOS
Sekarang panel menu yang dirender platform bisa dibuat di macOS menggunakan widget PlatformMenuBar, yang mendukung penyisipan menu khusus platform, dan mengontrol tampilan yang muncul di menu aplikasi macOS.
Dukungan penuh untuk input teks internasional di semua platform desktop
Input teks internasional, termasuk bahasa yang menggunakan editor metode input (IME) teks seperti Cina, Jepang, dan Korea, didukung penuh di ketiga platform desktop, termasuk metode input pihak ketiga seperti Sogou dan Google Japanese Input.
Aksesibilitas di semua platform desktop
Flutter untuk Windows, macOS, dan Linux mendukung layanan aksesibilitas seperti pembaca layar, navigasi yang dapat diakses, dan warna terbalik.
Biner universal secara default di macOS
Mulai Flutter 3, aplikasi desktop Flutter macOS dibuat sebagai biner universal, dengan dukungan native untuk Mac berbasis Intel dan perangkat Apple Silicon terbaru.
Menghentikan pengembangan untuk Windows 7/8
Dengan rilis ini, kami menaikkan versi Windows yang direkomendasikan untuk pengembangan menjadi Windows 10. Meskipun kami tidak memblokir pengembangan pada versi lama (Windows 7, Windows 8, Windows 8.1), versi ini tidak lagi didukung oleh Microsoft dan kami menyediakan pengujian terbatas pada rilis ini. Meskipun kami akan terus menawarkan dukungan ‘terbaik’ untuk versi lama, kami menyarankan Anda melakukan upgrade.
Catatan: Kami terus menawarkan dukungan untuk aplikasi Flutter yang berjalan di Windows 7; perubahan ini hanya memengaruhi lingkungan pengembangan yang direkomendasikan.
Update seluler
Dukungan perangkat foldable
Rilis Flutter 3 mendukung perangkat seluler Foldable. Dalam kolaborasi yang dipelopori oleh Microsoft ini, fitur dan widget baru memungkinkan Anda menciptakan pengalaman dinamis dan menarik di perangkat foldable.
Sebagai bagian dari pekerjaan ini, MediaQuery sekarang berisi daftar DisplayFeatures, yang menjelaskan batas dan status elemen perangkat seperti engsel, lipatan, dan potongan. Selain itu, sekarang widget DisplayFeatureSubScreen menempatkan widget turunannya tanpa tumpang tindih dengan batas DisplayFeatures, dan telah terintegrasi dengan pop-up dan dialog default framework, menjadikan Flutter secara default langsung sadar dan responsif terhadap elemen-elemen ini.
Terima kasih banyak kepada tim Microsoft, terutama kepada @andreidiaconu atas kontribusinya!
Cobalah contoh emulator Surface Duo, termasuk fork spesial Flutter Gallery, untuk melihat aksi dual tampilan Flutter.
Dukungan kecepatan refresh variabel iOS
Flutter sekarang mendukung kecepatan refresh variabel pada perangkat iOS dengan layar ProMotion, termasuk iPhone 13 Pro dan iPad Pro. Pada perangkat ini, aplikasi Flutter bisa merender dengan kecepatan refresh mencapai 120 hz, yang sebelumnya dibatasi hingga 60 hz. Ini menghasilkan pengalaman yang lebih mulus dalam animasi cepat seperti scrolling. Lihat: flutter.dev/go/variable-refresh-rate untuk detail selengkapnya.
Rilis iOS yang disederhanakan
Kami menambahkan opsi baru ke perintah flutter build ipa untuk menyederhanakan rilis aplikasi iOS Anda. Ketika Anda siap melakukan distribusi ke TestFlight atau App Store, jalankan flutter build ipa untuk membuat arsip Xcode (file .xcarchive) dan paket aplikasi (file .ipa). Anda juga bisa menambahkan --export-method ad-hoc, --export-method development, atau --export-method enterprise. Setelah paket aplikasi dibuat, upload ke Apple melalui aplikasi Apple Transport macOS atau pada command line menggunakan xcrun altool (jalankan man altool untuk petunjuk autentikasi kunci App Store Connect API). Setelah diupload, aplikasi Anda bisa dirilis ke TestFlight atau App Store. Setelah mengatur setelan project Xcode awal, seperti nama tampilan dan ikon aplikasi, Anda tidak perlu lagi membuka Xcode untuk merilis aplikasi Anda.
Update versi Gradle
Jika Anda membuat project baru dengan alat Flutter, Anda mungkin memperhatikan bahwa file yang dihasilkan sekarang menggunakan versi terbaru Gradle dan plugin Android Gradle. Untuk project yang sudah ada, Anda harus mengupgrade versinya secara manual ke 7.4 untuk Gradle, dan 7.1.2 untuk plugin Android Gradle.
Menghentikan dukungan 32-bit iOS/iOS 9/iOS 10
Seperti yang kami umumkan pada Februari 2022 dengan rilis stabil 2.10, dukungan Flutter untuk perangkat iOS 32-bit dan iOS versi 9 dan 10 akan segera berakhir. Perubahan ini memengaruhi iPhone 4S, iPhone 5, iPhone 5C, dan perangkat iPad generasi 2, 3, dan 4. Flutter 3 adalah rilis stabil terakhir yang mendukung versi dan perangkat iOS ini.
Untuk mempelajari lebih lanjut tentang perubahan ini, lihat RFC: Akhir dukungan untuk perangkat iOS 32-bit.
Update Web
Decoding gambar
Sekarang Flutter web secara otomatis mendeteksi dan menggunakan ImageDecoder API pada browser yang mendukungnya. Hari ini, sebagian besar browser berbasis Chromium (Chrome, Edge, Opera, Samsung Browser, dan lainnya) telah menambahkan API ini.
API baru mendekode gambar secara asinkron dari thread utama menggunakan codec gambar bawaan browser. Ini mempercepat decoding gambar 2 kali lipat, dan tidak akan memblokir thread utama, menghapus semua jank yang sebelumnya disebabkan oleh gambar.
Siklus proses aplikasi web
API siklus proses baru untuk aplikasi web Flutter memberi Anda fleksibilitas untuk mengontrol proses bootstrap aplikasi Flutter dari halaman HTML hosting, dan membantu Lighthouse menganalisis performa aplikasi Anda. Ini berlaku untuk banyak kasus penggunaan, termasuk skenario berikut yang sering diminta:
Update alat
Paket lint terbaru
Paket lint versi 2.0 telah dirilis:
* https://pub.dev/packages/flutter_lints/versions/2.0.0
* https://pub.dev/packages/lints/versions/2.0.0
Aplikasi yang dibuat di Flutter 3 dengan flutter create secara otomatis mengaktifkan set lint v2.0. Aplikasi, paket, dan plugin yang sudah ada disarankan untuk bermigrasi ke v2.0 untuk mengikuti praktik terbaik terbaru dan terhebat dalam dunia Flutter, dengan menjalankan flutter pub upgrade --major-versions flutter_lints.
Sebagian besar peringatan lint yang baru ditambahkan di v2 hadir dengan perbaikan otomatis. Jadi, setelah melakukan upgrade ke versi paket terbaru di pubspec.yaml aplikasi, Anda bisa menjalankan dart fix --apply di atas code base Anda untuk memperbaiki banyak peringatan lint secara otomatis (beberapa peringatan masih harus diperbaiki secara manual). Aplikasi, paket, atau plugin yang belum menggunakan package:flutter_lints disarankan untuk bermigrasi ke sana dengan mengikuti panduan migrasi untuk memanfaatkan praktik terbaik terbaru.
Peningkatan performa
Terima kasih kepada kontributor open source knopp, partial repaint telah diaktifkan di perangkat Android yang mendukungnya. Dalam pengujian lokal kami, perubahan ini memangkas waktu rasterisasi bingkai rata-rata persentil ke-90, dan persentil ke-99 pada benchmark backdrop_filter_perf di perangkat Pixel 4 XL sebesar 5x. Partial repaint ketika ada satu wilayah kotor persegi panjang sekarang diaktifkan di perangkat iOS dan Android yang lebih baru.
Kami semakin meningkatkan performa animasi opacity dalam kasus-kasus sederhana. Khususnya, ketika widget `Opacity` hanya berisi satu rendering primitif, metode `saveLayer` yang biasanya dipanggil oleh widget `Opacity` akan dihilangkan. Dalam benchmark yang dibuat untuk mengukur manfaat pengoptimalan ini, waktu rasterisasi untuk kasus ini meningkat secara signifikan. Dalam rilis mendatang, kami berencana untuk menerapkan pengoptimalan ini ke lebih banyak skenario.
Terima kasih atas hasil kerja dari kontributor open source JsouLiang, raster Engine dan UI thread sekarang berjalan dengan prioritas yang lebih tinggi di Android dan iOS daripada thread lainnya; misalnya, thread pembersihan sampah memori latar belakang Dart VM. Dalam benchmark kami, ini mempercepat waktu build bingkai rata-rata sebesar ~20%.
Sebelum Flutter 3 dirilis, kebijakan penerimaan untuk cache raster hanya melihat jumlah operasi menggambar dalam sebuah gambar, dengan asumsi bahwa setiap operasi dengan lebih dari beberapa proses akan menjadi kandidat caching yang baik. Sayangnya, ini mengakibatkan Engine menghabiskan memori untuk meng-cache gambar yang sebenarnya sangat cepat dirender. Rilis ini memperkenalkan mekanisme yang mampu memperkirakan kompleksitas rendering gambar berdasarkan biaya operasi gambar yang dimuatnya. Menggunakannya sebagai kebijakan penerimaan cache raster akan mengurangi penggunaan memori tanpa menurunkan performa dalam benchmark kami.
Terima kasih kepada kontributor open source ColdPaleLight, yang memperbaiki bug dalam penjadwalan bingkai yang menyebabkan beberapa bingkai animasi dijatuhkan di iOS. Terima kasih kepada semua orang yang telah melaporkan masalah ini dan menyediakan reproduksi serta video dari bingkai yang dijatuhkan.
Impeller
Tim sudah bekerja keras dalam mencari solusi untuk jank awal di iOS dan platform lainnya. Dalam rilis Flutter 3, Anda bisa melihat pratinjau backend rendering eksperimental yang disebut Impeller di iOS. Impeller membuat prakompilasi set shader yang lebih kecil dan sederhana pada waktu build engine sehingga mereka tidak akan dikompilasi saat aplikasi sedang berjalan; ini adalah sumber utama jank di Flutter. Impeller belum siap produksi dan masih jauh dari selesai. Belum semua fitur Flutter diimplementasikan, tetapi kami cukup senang dengan fidelitas dan performanya dalam aplikasi flutter/gallery yang kami bagikan progresnya. Secara khusus, bingkai terburuk dalam animasi transisi aplikasi Gallery adalah sekitar 20x lebih cepat.
Impeller tersedia di bawah flag di iOS. Anda bisa memberikan flag `--enable-impeller` ke `flutter run`, atau menyetel flag `FLTEnableImpeller` dalam file `Info.plist` Anda ke `true`, untuk mencoba Impeller. Pengembangan Impeller berlanjut di saluran master Flutter, dan kami berharap dapat memberikan update lanjutan di rilis mendatang.
Iklan sisipan di android
Saat Anda menggunakan paket google-mobile-ads, Anda akan melihat performa yang lebih baik dalam interaksi kritis pengguna seperti scrolling dan transisi antar halaman. Ini banyak terlihat pada perangkat yang populer di pasar negara berkembang. Bagian terbaiknya adalah kode Anda tidak perlu diubah!
Di belakang layar, Flutter sekarang menyusun tampilan Android, yang biasa disebut tampilan platform, secara asinkron. Ini berarti bahwa thread raster Flutter tidak perlu menunggu tampilan Android dirender. Sebagai gantinya, engine Flutter menempatkan tampilan di layar menggunakan tekstur OpenGL yang dikelolanya.
Update yang lebih menarik
Material 3
Flutter 3 mendukung Desain Material 3, Desain Material generasi berikutnya. Flutter 3 menyediakan dukungan keikutsertaan untuk Material 3; ini termasuk fitur Material You seperti warna dinamis, sistem warna dan tipografi yang diperbarui, pembaruan untuk banyak komponen, dan efek visual baru yang diperkenalkan di Android 12 seperti desain touch ripple baru dan efek stretch overscroll. Cobalah fitur Material 3 di codelab baru Mengubah aplikasi Flutter yang tidak menarik menjadi mengagumkan. Lihat dokumen API untuk detail selengkapnya tentang cara keikutsertaan untuk fitur baru ini dan komponen yang mendukung Material 3. Ikuti pekerjaan yang sedang berlangsung tentang masalah Material 3 Umbrella.
Ekstensi tema
Flutter sekarang memungkinkan penambahan apa pun pada ThemeData library material, dengan konsep yang disebut "Theme extensions". Alih-alih memperluas (dengan model Dart) ThemeData dan mengimplementasikan kembali copyWith, lerp, dan metode lainnya, Anda bisa menentukan ThemeData.extensions. Selain itu, sebagai developer paket, Anda bisa menyediakan ThemeExtensions. Lihat flutter.dev/go/theme-extensions untuk detail selengkapnya dan melihat contohnya di GitHub.
Iklan
Kami tahu bahwa sangatlah penting bagi penayang untuk meminta izin iklan yang dipersonalisasi dan menangani persyaratan App Tracking Transparency (ATT) Apple.
Untuk mendukung persyaratan ini, Google menawarkan SDK User Messaging Platform (UMP), yang menggantikan open source sebelumnya Consent SDK. Dalam rilis GMA SDK untuk Flutter mendatang, kami menambahkan dukungan untuk UMP (User Messaging Platform) SDK agar penayang bisa mendapatkan persetujuan pengguna. Untuk detail selengkapnya, lihat halaman google_mobile_ads di pub.dev.
Perubahan yang dapat menyebabkan gangguan
Seiring kami terus mengembangkan dan meningkatkan Flutter, kami selalu berusaha meminimalkan jumlah perubahan yang dapat menyebabkan gangguan. Dengan rilis Flutter 3, berikut adalah beberapa perubahan yang dapat menyebabkan gangguan:
Jika Anda menggunakan salah satu api ini, harap baca panduan migrasi di Flutter.dev.
Ringkasan
Dari Tim Flutter di Google, kami mengucapkan terima kasih atas kerja luar biasa yang telah dilakukan komunitas untuk membantu Flutter mempertahankan statusnya sebagai toolkit UI lintas platform terpopuler, seperti yang diungkapkan oleh analis seperti Statista dan SlashData Kami berharap bisa bekerja sama sebagai komunitas untuk terus menyediakan alat berbasis komunitas yang membantu menciptakan pengalaman yang menyenangkan bagi developer dan pengguna!
This is a smart play move for developers looking to expand the reach of their apps. With improvements like better performance and international text input, Flutter continues to grow, making it a powerful tool for creating cross-platform apps.
ReplyDelete