Saya Rangkum Update Flutter 3.35: Hot Reload di Web!

4 menit baca
Mobile Development

Pendahuluan

Pada update Flutter 3.35 ini terdapat 1.108 commit dari 168 contributor, 39 diantaranya baru bergabung.

Web

Hot reload di web aktif secara default

Hot reload untuk development web sekarang sudah tersedia sebagai fitur experimental. Sebelumnya, aktifasi memerlukan flag --web-experimental-hot-reload saat debug. Untuk menonaktifkan, gunakan flag --no-web-experimental-hot-reload.

Wasm dengan dry run

Setiap JS yang dibuild kini memberlakukan "dry run", sebagai antisipasi penggunaan default WebAssembly (Wasm) untuk target build ke web. Fitur dapat disetel dengan flag --(no-)wasm-dry-run.

Framework

Peningkatan accessibility

Web semantic

Semantic locale sudah ditambahkan, kegunannya untuk menentukan bahasa yang digunakan untuk accessibility. (#171196)

Widget baru

Widget SemanticsLabelBuilder sudah ditambahkan, kegunaannya untuk menggabungkan beberapa string menjadi satu (#171683). Widget SliverEnsureSemantics sudah ditambahkan, kegunaannya untuk memastikan widget sliver yang di luar layar tetap berada di accessibility tree, membantu navigasi saat menggunakan screen reader (#166889).

Update widget dan platform

  • Untuk iOS, terdapat perbaikan pada scaling teks di CupertinoSliverNavigationBar (#168866), dan aktivasi tab di VoiceOver (#170076).
  • Untuk Android, TalkBack kini berfungsi untuk komponen native yang di-embed dengan platform views (#168939).
  • Properti semantic untuk CustomPainter diperbarui agar UI lebih dapat dikustomisasi (#168113).
  • Toolbar saat seleksi teks pada bahasa yang berformat RTL sudah disejajarkan (#169854).

Material dan Cupertino

Komponen baru dan yang di-update

  • DropdownMenuFormField sudah ditambahkan, sebagai pengganti dari penggunaan DropdownMenu di form (#163721).
  • NavigationRail sekarang bisa scrollable (#169421).
  • NavigationDrawer sekarang memiliki header dan footer (#168005).
  • CupertinoExpansionTile sudah ditambahkan (#165606).

Fidelity dan interaktifitas

  • Bentuk beberapa widget Cupertino kini sudah diperbarui mengikuti RSuperellipse (#167784).
  • Haptic feedback sudah ditambahkan ke komponen interaktif penting seperti CupertinoPicker (#170641) dan CupertinoSlider (#167362).
  • Indikator value Slider sekarang bisa disetel agar selalu terlihat (#162223).

Lainnya dari framework

Sliver

Sekarang dapat secara eksplisit mengontrol paint order (z-order) di sliver (#164818).

Navigasi dan form

  • Properti fullscreenDialog (#167794) ditambahkan ke ModalRoute (beserta semua turunannya) dan showDialog, kegunaannya untuk kustomisasi navigasi ke dan dari route dialog.
  • FormField sekarang memiliki callback onReset (#167060).

Input dan seleksi teks

  • Handling gesture kini digeneralisir dengan interface baru, yaitu PositionedGestureDetails (#160714).
  • Field teks sebaris sudah tidak lagi srollable, menjadi selaras dengan iOS native (#162841).

Penambahan tombol shortcut Home dan End di Android (#168184)

Tombol Fungsi
Home/End Memindahkan cursor to ke awal/akhir baris.
Home/End + Shift Melebarkan seleksi ke awal/akhir baris.
Home/End + Ctrl Memindahkan cursor to ke awal/akhir field.
Home/End + Shift + Ctrl Melebarkan seleksi ke awal/akhir field.

Android

Proteksi konten sensitif

Di Android 15, API 35, widget SensitiveContent sudah ditambahkan, kegunaannya untuk mem-blur seluruh layar saat screen share.

Engine

General update di engine

iOS

  • Opsi Live Text (OCR) pada field teks diadakan kembali.

Android

  • Template project baru sekarang menggunakan Android 24.

DevTools dan IDE

Server MCP Dart dan Flutter experimental tersedia di channel stable

AI coding assistant

Server MCP Dart dan Flutter bertindak sebagai bridge, menjadikan AI coding assistant dapat mengakses ke lebih banyak konteks pada project melalui toolchain Dart dan Flutter. AI coding assistant kini dapat memahami project secara mendalam dan mengambil tindakan seperti:

  • Fix runtime error: Melakukan inspect pada widget tree yang sedang berlangsung, mengidentifikasi RenderFlex yang overflow, dan menerapkan fix secara otomatis.
  • Mengelola dependency: Menemukan package di pub.dev untuk task tertentu, menambahkannya ke pubspec.yaml, dan menjalankan pub get.
  • Menulis dan memperbaiki kode: Membuat boilerplate fitur baru, lalu memperbaiki sendiri error analisis yang muncul.

Widget Previews (Experimental)

Widget Previews memungkinkan untuk melakukan visualisasi dan testing widget pada environment sandbox. Misalnya saat membuat design system atau saat testing komponen dengan konfigurasi berbeda, seperti ukuran layar, theme, dan scaling teks. Ini dilakukan secara sekaligus dan berdampingan.

Analysis Server

Beberapa command dari dart command-line tool yang menggunakan analysis server seperti dart analyze, dart fix, dan dart language-server, sekarang menjalankan snapshot analysis server yang AOT-compiled.

Breaking changes dan deprecation

  • AppBarTheme, BottomAppBarTheme, dan InputDecorationTheme sudah di-refactor ke ThemeData agar lebih konsisten dengan Material 3.
  • Widget Radio, CupertinoRadio, dan RadioListTile sudah di-redesign untuk menambah accessibility. Properti groupValue dan onChanged sudah deprecated dan diganti dengan widget RadioGroup untuk mengelola state dari sekumpulan radio button.
  • Widget Form tidak lagi dapat digunakan sebagai sliver, form harus dibungkus dengan SliverToBoxAdapter untuk digunakan di dalam CustomScrollView.
  • Parameter value di DropdownButtonFormField sekarang deprecated, diganti menjadi initialValue.

Deprecated Android ber-architecture 32-bit x86

Deprecated dukungan IDE untuk SDK Flutter sebelum 3.13

SDK Android minimum

API 24 (Android 7) adalah minimum untuk flutter.minSdkVersion. Dan berikut adalah minimum dependency Android:

  • Gradle version: 8.7.0
  • Android Gradle Plugin (AGP): 8.6.0
  • Java: 17

Related Posts