Aplikasi yang ingin menjangkau semua pengguna ponsel di Indonesia harus hadir di dua toko sekaligus: Google Play untuk Android dan App Store untuk iPhone. Secara tradisional, artinya ada dua aplikasi yang ditulis terpisah. Versi Android memakai Kotlin atau Java, sementara versi iOS memakai Swift. Dua bahasa berarti dua tim, dua basis kode, dan setiap fitur baru dikerjakan dua kali.

Flutter adalah framework buatan Google untuk memecahkan masalah itu. Dengan Flutter, Anda menulis satu basis kode lalu membangunnya menjadi aplikasi Android, iOS, web, Windows, macOS, dan Linux. Bedanya dengan pendekatan lain terletak pada cara ia menampilkan layar: Flutter tidak meminjam tombol dan menu bawaan sistem operasi, melainkan menggambar setiap pikselnya sendiri.

Artikel ini membahas apa itu Flutter, cara kerjanya, kelebihan dan kekurangannya, sampai kapan Anda sebaiknya memakainya. Perintah di bagian tutorial kami uji pada Flutter 3.47.7, rilis stabil terbaru per Oktober 2026, kecuali build APK yang membutuhkan Android SDK.

Flutter Adalah Framework UI Lintas Platform dari Google

Secara singkat, pengertian Flutter adalah framework UI (user interface, antarmuka pengguna) yang bersifat open source untuk membangun aplikasi dari satu basis kode. Satu proyek Flutter bisa dikompilasi menjadi aplikasi Android, iOS, aplikasi web, dan aplikasi desktop untuk Windows, macOS, serta Linux. Google merilisnya di bawah lisensi BSD 3-Clause, sehingga gratis dipakai untuk proyek pribadi maupun komersial.

Kata "framework" di sini berarti kerangka kerja yang sudah menyediakan komponen siap pakai: tombol, daftar, formulir, navigasi antarhalaman, hingga animasi. Anda tidak menulis semuanya dari nol, tetapi menyusun komponen tersebut menjadi aplikasi. Konsep umumnya kami bahas lebih lengkap di artikel framework adalah.

Secara harfiah, flutter artinya mengepak atau berkibar, seperti gerak sayap burung kecil. Namun, saat orang bertanya "flutter itu apa" dalam konteks aplikasi, yang dimaksud hampir selalu framework ini.

Istilah flutter juga dipakai di dunia kedokteran, misalnya atrial flutter, yaitu gangguan irama jantung. Artikel ini hanya membahas Flutter sebagai framework aplikasi.

Flutter Bukan Bahasa Pemrograman: Peran Dart di Baliknya

Flutter sering disebut bahasa pemrograman, padahal bukan. Bahasa yang Anda tulis saat membuat aplikasi Flutter adalah Dart, bahasa pemrograman yang juga dikembangkan Google sejak 2011. Jadi, kalau sebuah soal menanyakan "bahasa pemrograman yang digunakan Flutter adalah…", jawabannya Dart.

Dart menyediakan aturan menulis kode, sedangkan Flutter menyediakan komponen tampilan dan mesin yang menjalankannya di layar. Anda tidak bisa memakai Flutter tanpa Dart, tetapi Dart bisa dipakai tanpa Flutter, misalnya untuk program baris perintah atau server.

Dart dipilih karena punya dua mode kompilasi. Saat pengembangan, kode dikompilasi just-in-time (JIT, saat program berjalan). Saat rilis, kode dikompilasi ahead-of-time (AOT, sebelum dijalankan) menjadi kode mesin ARM atau x64. Dart juga punya sound null safety, yaitu jaminan bahwa variabel yang tidak boleh kosong tidak pernah berisi null.

Saat Anda mengunduh Flutter, yang didapat adalah Flutter SDK (Software Development Kit). Paket ini berisi framework Flutter, engine, Dart SDK, dan perintah flutter untuk membuat, menjalankan, serta membangun proyek. Flutter 3.47.7 yang kami uji membawa Dart 3.13.5, jadi Anda tidak perlu memasang Dart secara terpisah.

Cara Kerja Flutter: Menggambar Setiap Piksel Sendiri

Cara paling mudah memahami Flutter adalah dengan bertanya: siapa yang menggambar tombol di layar? Ada tiga jawaban, tergantung pendekatan yang dipakai.

  1. Aplikasi native: tombol digambar oleh toolkit bawaan sistem operasi. Aplikasi Android memakai komponen Android, aplikasi iOS memakai komponen iOS. Tampilannya otomatis mengikuti gaya masing-masing OS, tetapi kodenya harus ditulis dua kali.
  2. React Native: kode ditulis dalam JavaScript, lalu framework meminta sistem operasi membuat komponen native yang sesuai. Satu kode bisa dipakai di dua platform, tetapi tampilan akhirnya tetap digambar oleh OS masing-masing.
  3. Flutter: Flutter tidak meminta OS membuat tombol. Engine Flutter menerima kanvas kosong dari sistem operasi, lalu menggambar seluruh tampilan sendiri lewat GPU. Dokumentasi resminya menegaskan Flutter tidak memakai widget native.
Flutter, React Native, dan native: hanya engine Flutter yang menggambar tampilan sendiri sehingga identik di tiap OS.
Flutter, React Native, dan native: hanya engine Flutter yang menggambar tampilan sendiri sehingga identik di tiap OS.

Karena semua piksel digambar sendiri, aplikasi Flutter tampil identik di Android 7 maupun Android 16, di iPhone lama maupun baru. Bagi tim desain, ini berarti satu desain di Figma cukup diterjemahkan satu kali. Sisi lainnya, tampilan tidak otomatis berubah saat Apple atau Google memperbarui gaya bawaan OS mereka.

Contoh nyatanya adalah desain Liquid Glass yang dibawa iOS 26 pada 2025. Aplikasi native mendapatkannya cukup dengan dikompilasi ulang memakai Xcode 26. Widget Cupertino bawaan Flutter tidak ikut berubah, dan tim Flutter memindahkan pekerjaan itu ke paket cupertino_ui yang masih dikembangkan.

Mesin gambar yang dipakai saat ini bernama Impeller. Sejak Flutter 3.27, Impeller menjadi renderer bawaan di iOS dan Android API 29 (Android 10) ke atas, dan di iOS ia menjadi satu-satunya pilihan. Flutter 3.47 menjadikannya bawaan juga di Windows, macOS, dan Linux. Pustaka grafis Skia, yang dulu menjadi mesin gambar Flutter, kini terutama dipakai untuk versi web.

Tiga Lapisan di Balik Aplikasi Flutter

Setiap aplikasi Flutter tersusun dari tiga lapisan dengan tugas berbeda.

  1. Framework: lapisan paling atas yang ditulis dalam Dart. Di sinilah widget, animasi, gesture, serta komponen bergaya Material (Android) dan Cupertino (iOS) berada. Kode aplikasi Anda berinteraksi dengan lapisan ini.
  2. Engine: inti yang sebagian besar ditulis dalam C++. Engine berisi Impeller, tata letak teks, runtime Dart, serta akses berkas dan jaringan.
  3. Embedder: lapisan tipis yang berbeda untuk tiap sistem operasi. Embedder menyediakan permukaan untuk menggambar, meneruskan sentuhan dan ketikan, lalu menjalankan aplikasi seperti program biasa di OS tersebut.
Tiga lapisan Flutter antara kode Dart dan sistem operasi: framework (Dart), engine (C++, Impeller), dan embedder per OS.
Tiga lapisan Flutter antara kode Dart dan sistem operasi: framework (Dart), engine (C++, Impeller), dan embedder per OS.

Fitur yang memang milik sistem operasi, seperti kamera, GPS, atau sensor sidik jari, diakses lewat platform channel. Saluran ini mengirim pesan dari kode Dart ke kode Kotlin atau Swift, lalu mengembalikan hasilnya. Dalam praktik, Anda jarang menulis saluran ini sendiri karena sudah dibungkus plugin yang tersedia di pub.dev, repositori paket resmi Dart dan Flutter.

Mode Debug dan Mode Rilis

Saat Anda menjalankan flutter run, aplikasi dibangun dalam mode debug. Kode Dart berjalan di Dart VM dengan kompilasi JIT, sehingga perubahan kode bisa disuntikkan ke aplikasi yang sedang berjalan. Fitur ini disebut hot reload. Anda mengubah warna tombol, menyimpan berkas, lalu perubahannya tampil dalam hitungan detik tanpa kehilangan state (data yang sedang tampil, seperti isi formulir). Harganya, aplikasi mode debug lebih lambat dan lebih besar karena membawa kompilator dan alat pemeriksa.

Saat Anda menjalankan flutter build apk atau flutter build ipa, aplikasi dibangun dalam mode rilis. Kode Dart dikompilasi AOT menjadi kode mesin, alat debug dibuang, dan hasilnya siap diunggah ke Play Store atau App Store. Karena itu, jangan pernah mengukur kehalusan animasi dari mode debug. Uji performa selalu di mode rilis atau mode profile pada perangkat fisik.

Mode debug Flutter memakai JIT dan hot reload tetapi lebih lambat; mode rilis memakai AOT ke kode mesin untuk uji performa.
Mode debug Flutter memakai JIT dan hot reload tetapi lebih lambat; mode rilis memakai AOT ke kode mesin untuk uji performa.

Semua Tampilan Adalah Widget

Di Flutter, hampir semua yang tampil di layar adalah widget, mulai dari teks, tombol, jarak kosong, sampai halaman utuh. Widget di sini bukan widget layar beranda ponsel, melainkan blok penyusun antarmuka yang bisa saling dibungkus. Satu halaman adalah pohon widget: widget induk membungkus widget anak, dan seterusnya.

Contoh berikut adalah aplikasi Flutter paling sederhana. Kode ini menampilkan satu halaman dengan bilah judul dan teks di tengah layar:

DART
import 'package:flutter/material.dart';

void main() {
  runApp(const MaterialApp(home: Beranda()));
}

class Beranda extends StatelessWidget {
  const Beranda({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Halo Flutter'),
      ),
      body: const Center(
        child: Text('Semua ini widget'),
      ),
    );
  }
}

MaterialApp menyiapkan tema dan navigasi. Scaffold adalah kerangka halaman standar yang menyediakan tempat untuk bilah judul (appBar), isi (body), tombol melayang, dan menu bawah. Itulah sebabnya hampir setiap halaman Flutter dimulai dengan Scaffold. Center dan Text adalah widget anak yang mengatur posisi dan isi.

Pohon widget Flutter dari contoh kode: MaterialApp membungkus Scaffold, lalu AppBar dan Center masing-masing berisi Text.
Pohon widget Flutter dari contoh kode: MaterialApp membungkus Scaffold, lalu AppBar dan Center masing-masing berisi Text.

Widget terbagi dua jenis. StatelessWidget menampilkan sesuatu yang tidak berubah setelah dibuat, seperti contoh di atas. StatefulWidget menyimpan data yang bisa berubah, misalnya angka penghitung atau isi keranjang belanja. Saat datanya berubah, Flutter menjalankan ulang fungsi build() lalu hanya menggambar ulang bagian yang berbeda.

Pada aplikasi yang lebih besar, data yang sama sering dipakai banyak halaman sekaligus, misalnya status login. Mengatur aliran data seperti ini disebut state management. Dokumentasi resmi Flutter mendaftar beberapa pilihan populer, antara lain Provider, Riverpod, dan BLoC.

Fungsi Flutter dan Platform yang Didukung

Fungsi utama Flutter adalah membangun aplikasi dengan antarmuka yang sama di banyak platform dari satu basis kode. Dalam praktik, Flutter digunakan untuk:

  1. Aplikasi mobile Android dan iOS: penggunaan paling umum, dari aplikasi toko daring sampai perbankan.
  2. Aplikasi desktop: aplikasi kasir, aplikasi internal kantor, atau alat produktivitas untuk Windows, macOS, dan Linux.
  3. Aplikasi web: single page app dan progressive web app (PWA), yaitu aplikasi web yang bisa dipasang seperti aplikasi biasa.
  4. Perangkat tertanam: layar di dasbor mobil, mesin kasir, atau perangkat rumah pintar.
  5. Gim 2D sederhana: lewat Flame, game engine open source yang berjalan di atas Flutter.

Per Flutter 3.47, versi minimum yang didukung adalah sebagai berikut:

PlatformVersi minimum
AndroidAndroid 7.0 (API 24)
iOSiOS 15
WindowsWindows 10
macOSmacOS 12 Monterey
LinuxUbuntu 20.04 LTS, Debian 10
WebChrome, Edge, Firefox (dua rilis terakhir), Safari 15.6

Perlu diperhatikan, Flutter hanya mengurus sisi tampilan dan logika di perangkat. Data pengguna, login, dan pembayaran tetap membutuhkan backend yang diakses lewat API. Banyak pengembang Flutter memilih Firebase karena keduanya sama-sama buatan Google dan plugin resminya tersedia. Untuk data lokal di perangkat, paket sqflite memungkinkan aplikasi menyimpan data ke SQLite.

Contoh Aplikasi Flutter yang Sudah Dipakai Luas

Halaman showcase resmi Flutter mencantumkan puluhan aplikasi produksi, antara lain:

  1. Produk Google: Google Pay, Google Classroom, Google Ads, Google Earth, NotebookLM, dan YouTube Create.
  2. Otomotif dan elektronik: BMW, Toyota, LG Electronics, dan Whirlpool.
  3. Keuangan: Nubank (Brasil), SoFi, Betterment, dan Virgin Money.
  4. Perusahaan teknologi Asia: Alibaba, ByteDance, Tencent, dan Xiaomi.
  5. Gim: PUBG Mobile memakainya untuk modul komunitas tempat pemain berbagi klip, sedangkan Supercell memakainya untuk Supercell ID.

Beberapa perusahaan melaporkan dampaknya dengan angka. Alibaba menyebut waktu pengembangan fitur baru turun dari satu bulan menjadi dua minggu, sedangkan Whirlpool melaporkan biaya pengembangan berkurang 50%. Angka ini berasal dari studi kasus yang disusun bersama Google, jadi anggap sebagai gambaran potensi, bukan jaminan.

Sejarah Singkat dan Versi Flutter Terbaru

Flutter pertama kali diperkenalkan pada 2015 dengan nama kode "Sky" di Dart Developer Summit, dan saat itu hanya berjalan di Android. Versi stabil pertama, Flutter 1.0, dirilis pada 4 Desember 2018. Setelah itu, cakupannya melebar bertahap:

RilisTanggalPerubahan penting
Flutter 1.04 Desember 2018Rilis stabil pertama untuk Android dan iOS
Flutter 23 Maret 2021Dukungan web stabil dan null safety
Flutter 311 Mei 2022Windows, macOS, dan Linux berstatus stabil
Flutter 3.2711 Desember 2024Impeller jadi bawaan di iOS dan Android 10+
Flutter 3.4712 Agustus 2026Impeller bawaan di desktop, Widget Preview stabil

Flutter kini merilis versi utama sekitar setiap tiga bulan, dengan rilis perbaikan di antaranya. Versi stabil terbaru saat artikel ini ditulis adalah 3.47.7 (8 Oktober 2026).

Satu perubahan di 3.47 perlu Anda ketahui. Komponen Material dan Cupertino kini tersedia sebagai paket terpisah, material_ui dan cupertino_ui. Pustaka bawaannya dijadwalkan berstatus usang (deprecated) mulai November 2026, sehingga tutorial yang memakai package:flutter/material.dart masih berjalan, tetapi suatu saat perlu dimigrasikan.

Kelebihan Flutter

  1. Satu basis kode untuk enam platform: logika bisnis dan tampilan ditulis sekali. Perbaikan bug juga cukup dilakukan di satu tempat.
  2. Hot reload mempercepat iterasi: perubahan tampilan terlihat dalam hitungan detik tanpa memulai ulang aplikasi.
  3. Tampilan konsisten dan bebas dikustomisasi: karena Flutter menggambar sendiri, desain unik di luar gaya bawaan OS bisa diwujudkan tanpa trik.
  4. Performa mendekati native: mode rilis menghasilkan kode mesin, sehingga pada aplikasi bisnis umumnya perbedaannya dengan aplikasi native tidak terasa.
  5. Katalog widget yang lengkap: komponen Material Design dan Cupertino tersedia bawaan, ditambah ribuan paket komunitas di pub.dev.
  6. Gratis dan terbuka: tidak ada biaya lisensi, dan seluruh kode sumbernya terbuka di GitHub.

Kekurangan Flutter yang Perlu Anda Pertimbangkan

  1. Ukuran aplikasi lebih besar: setiap aplikasi membawa engine-nya sendiri, yang menurut dokumentasi resmi menambah beberapa megabyte terkompresi. Di web, efeknya lebih terasa. Contoh aplikasi satu halaman di artikel ini membuat Chrome mengunduh 3,5 MB sebelum tampil, sebagian besar untuk renderer dan kode aplikasi.
  2. Kurang cocok untuk website berisi teks: dokumentasi resmi Flutter menyatakan Flutter web belum cocok untuk situs berisi banyak teks seperti blog. Saat kami memuat contoh aplikasi tadi di Chrome, teks halamannya (innerText) kosong, karena tulisan digambar ke kanvas dan hanya tersimpan di dalam main.dart.js. Untuk website yang mengandalkan Google, HTML biasa atau framework web tetap lebih tepat.
  3. Fitur OS terbaru tidak langsung tersedia: saat Apple atau Google merilis fitur baru, aplikasi native bisa memakainya pada hari pertama. Di Flutter, Anda menunggu plugin diperbarui atau menulis platform channel sendiri.
  4. Komponen native terasa lebih berat: menyisipkan tampilan native seperti Google Maps ke dalam aplikasi Flutter memakai mekanisme platform view. Mekanisme ini menyalin gambar setiap frame, sehingga lebih boros daripada widget Flutter biasa.
  5. Dart jarang dipakai di luar Flutter: survei Stack Overflow 2025 mencatat Dart hanya dipakai 5,9% responden, jauh di bawah JavaScript atau Python. Kemampuan Dart Anda hampir sepenuhnya terikat pada ekosistem Flutter.
  6. Tetap butuh Mac untuk iOS: membangun dan menandatangani aplikasi iOS memerlukan Xcode, yang hanya berjalan di macOS. Satu basis kode tidak menghapus kebutuhan perangkat ini.

Flutter vs React Native vs Native (Kotlin/Swift)

Pilihan yang paling sering dibandingkan dengan Flutter adalah React Native dan pengembangan native. Tabel berikut merangkum perbedaan utamanya:

AspekFlutterReact NativeNative
BahasaDartJavaScript / TypeScriptKotlin (Android), Swift (iOS)
Penggambar tampilanEngine Flutter (Impeller)Komponen native OSToolkit OS
Tampilan antar-OSIdentikMengikuti OSMengikuti OS
Target platformMobile, web, desktopFokus mobileSatu platform per kode
Fitur OS terbaruLewat pluginLewat modul nativeLangsung tersedia
Cocok untukUI kustom, tim kecilTim yang kuat di ReactAplikasi yang bergantung pada fitur OS

React Native cocok untuk tim yang sudah menguasai JavaScript dan React, karena pengetahuan itu bisa langsung dipakai. Sejak versi 0.76 (Oktober 2024), arsitektur barunya memangkas lapisan perantara antara JavaScript dan kode native, sehingga selisih performanya dengan Flutter makin tipis.

Pengembangan native dengan Kotlin dan Swift tetap unggul untuk aplikasi yang sangat bergantung pada fitur OS. Di tengahnya kini ada Kotlin Multiplatform, yang membagi logika bisnis antarplatform. Varian tampilannya, Compose Multiplatform, berstatus stabil untuk iOS sejak Mei 2025.

Kapan Flutter Tepat, Kapan Sebaiknya Tidak

Flutter tepat dipilih kalau:

  1. Anda membutuhkan aplikasi Android dan iOS sekaligus dengan tim 1–5 pengembang yang tidak mungkin dipecah menjadi dua tim.
  2. Desain aplikasinya punya identitas visual kuat yang harus sama persis di semua perangkat.
  3. Aplikasinya bertipe formulir, katalog, dasbor, atau transaksi, yang mencakup sebagian besar aplikasi bisnis.
  4. Anda juga butuh versi desktop untuk kasir atau admin dari kode yang sama.

Pertimbangkan pilihan lain kalau:

  1. Aplikasi hanya untuk satu platform dan tim Anda sudah fasih Kotlin atau Swift. Native akan lebih sederhana.
  2. Aplikasi bertumpu pada fitur OS yang spesifik, seperti widget layar beranda, aplikasi jam pintar, atau integrasi mendalam dengan Siri dan CarPlay.
  3. Yang Anda butuhkan sebenarnya website konten yang harus ditemukan lewat Google. Gunakan HTML, CMS, atau framework web.
  4. Tim Anda sudah kuat di React dan ingin berbagi kode dengan website. React Native lebih masuk akal.

Cara Mulai Belajar Flutter dari Nol

Sebelum mulai, siapkan dasar logika pemrograman seperti variabel, percabangan, perulangan, dan fungsi. Pengalaman dengan bahasa berorientasi objek seperti Java akan sangat membantu, karena sintaks Dart mirip.

Untuk spesifikasi, siapkan laptop dengan RAM minimal 8 GB, sesuai kebutuhan Android Studio, dan RAM 16 GB akan jauh lebih lega saat emulator berjalan. Sediakan juga ruang kosong minimal 10 GB. SDK Flutter 3.47.7 untuk macOS saja berukuran 2,26 GB saat diunduh dan 4,1 GB setelah diekstrak, belum termasuk Android Studio.

Langkah #1: Unduh dan Pasang Flutter SDK

Unduh berkas SDK dari halaman instalasi resmi di docs.flutter.dev sesuai sistem operasi Anda. Ekstrak ke folder tanpa spasi, misalnya C:\src\flutter di Windows atau ~/development/flutter di macOS dan Linux. Lalu tambahkan folder bin di dalamnya ke variabel PATH. Contoh untuk macOS dan Linux:

Bash
FLUTTER="$HOME/development/flutter"
export PATH="$FLUTTER/bin:$PATH"

Tulis kedua baris tersebut ke berkas ~/.zshrc atau ~/.bashrc supaya tetap berlaku setelah terminal ditutup. Pengguna Windows bisa menambahkannya lewat menu Edit the system environment variables. Pemakai VS Code juga bisa memasang SDK langsung dari ekstensi Flutter.

Langkah #2: Periksa Lingkungan dengan flutter doctor

Perintah berikut memeriksa apa saja yang sudah dan belum siap di komputer Anda:

Bash
flutter doctor

Di laptop uji kami yang belum memasang Android Studio maupun Xcode, ringkasan hasilnya seperti ini:

Code
[✓] Flutter (Channel stable, 3.47.7, ...)
[✗] Android toolchain - ...
[!] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Connected device (2 available)
[✓] Network resources

Tanda [✓] berarti siap, [!] berarti ada yang kurang, dan [✗] berarti belum terpasang. Untuk aplikasi Android, pasang Android Studio lalu jalankan flutter doctor --android-licenses untuk menyetujui lisensinya. Xcode hanya diperlukan untuk iOS dan macOS. Kalau baru ingin mencoba, Chrome sudah cukup sebagai target.

Langkah #3: Buat dan Jalankan Proyek Pertama

Buat proyek baru dengan perintah berikut. Nama proyek wajib huruf kecil dan memakai garis bawah, bukan tanda hubung:

Bash
flutter create halo_flutter
cd halo_flutter
flutter run

Proyek baru terbentuk dalam sekitar satu detik. Kode Dart berada di folder lib, sedangkan folder android, ios, web, windows, macos, dan linux berisi pengaturan tiap platform. Kode utama berada di lib/main.dart, dan Anda bisa menggantinya dengan contoh kode di bagian widget di atas. Folder test menampung uji otomatis, sedangkan pubspec.yaml mencatat nama proyek dan paket dari pub.dev. Setelah mengubah daftar paket, jalankan flutter pub get.

Struktur proyek Flutter: kode Dart di lib/main.dart, paket di pubspec.yaml, dan pengaturan tiap platform di foldernya.
Struktur proyek Flutter: kode Dart di lib/main.dart, paket di pubspec.yaml, dan pengaturan tiap platform di foldernya.

Kalau nama proyek memakai tanda hubung, misalnya halo-flutter, perintahnya gagal dengan pesan bahwa nama tersebut bukan nama paket Dart yang valid. flutter run akan menanyakan perangkat tujuan kalau ada lebih dari satu. Tanpa emulator, pakai flutter run -d chrome untuk membukanya di browser.

Langkah #4: Coba Hot Reload

Selama aplikasi berjalan, buka lib/main.dart dan ubah teks atau warnanya. Simpan berkas, lalu tekan r di terminal tempat flutter run berjalan. Perubahan langsung tampil tanpa aplikasi dimulai ulang. Tekan R (huruf besar) untuk hot restart, yaitu memulai ulang aplikasi dan mengosongkan state-nya, lalu q untuk berhenti.

Perintah ini juga berlaku saat aplikasi berjalan di Chrome. Kalau memakai VS Code atau Android Studio, hot reload berjalan otomatis setiap kali berkas disimpan.

Langkah #5: Build APK atau Versi Web

Untuk menghasilkan berkas APK yang bisa dipasang di ponsel Android, jalankan:

Bash
flutter build apk --release

Perintah ini membutuhkan Android SDK dari Android Studio. Menurut dokumentasi resmi, hasilnya tersimpan di build/app/outputs/flutter-apk/app-release.apk. Untuk diunggah ke Play Store, gunakan flutter build appbundle, yang menghasilkan berkas .aab.

Untuk versi web, jalankan:

Bash
flutter build web

Di uji kami, proses ini selesai dalam 12 detik dan menghasilkan folder build/web berukuran 39 MB. Angka itu terlihat besar karena berisi beberapa varian renderer sekaligus. Browser hanya mengambil yang dibutuhkan, yaitu 3,5 MB. Sebanyak 1,90 MB datang dari server Anda, terutama main.dart.js 1,87 MB (sekitar 550 KB bila dikompresi gzip).

Isi build/web adalah berkas statis berupa HTML, JavaScript, dan WebAssembly, sehingga bisa diunggah ke layanan web hosting biasa lewat File Manager atau FTP. Sisanya, 1,65 MB, berupa renderer CanvasKit dan font yang secara bawaan diambil dari CDN Google (gstatic.com), bukan dari hosting Anda. Opsi --wasm menghasilkan versi WebAssembly, tetapi server wajib mengirim header Cross-Origin-Embedder-Policy dan Cross-Origin-Opener-Policy.

Build Flutter web berukuran 39 MB, tetapi Chrome hanya mengunduh 3,5 MB: 1,90 MB dari hosting dan 1,65 MB dari CDN Google.
Build Flutter web berukuran 39 MB, tetapi Chrome hanya mengunduh 3,5 MB: 1,90 MB dari hosting dan 1,65 MB dari CDN Google.

Pertanyaan Seputar Flutter

Apa itu Flutter developer?

Flutter developer adalah pengembang yang membangun aplikasi memakai Flutter dan Dart. Pekerjaannya meliputi menerjemahkan desain menjadi widget, mengelola state, menghubungkan aplikasi ke API, sampai merilis aplikasi ke toko aplikasi. Posisi ini biasanya juga menuntut pemahaman dasar Android dan iOS, karena masalah build sering muncul di lapisan native.

Apakah FlutterFlow sama dengan Flutter?

Tidak. FlutterFlow adalah layanan pihak ketiga, bukan buatan tim Flutter di Google. Ia menyediakan editor visual seret-lepas yang menghasilkan kode Flutter. Untuk aplikasi yang rumit, Anda tetap perlu memahami Flutter dan Dart.

Apakah Flutter gratis?

Ya. Flutter dan Dart sama-sama open source dan tidak memungut biaya lisensi, termasuk untuk aplikasi komersial. Biaya yang tetap ada berasal dari toko aplikasi: akun Google Play Console dikenai biaya pendaftaran sekali sebesar US$25, sedangkan Apple Developer Program US$99 per tahun.

Apakah membuat aplikasi iOS dengan Flutter harus memakai Mac?

Untuk membangun, menandatangani, dan mengunggah aplikasi iOS, Anda membutuhkan Xcode yang hanya tersedia di macOS. Pengembangan sehari-hari bisa dilakukan di Windows atau Linux, lalu build iOS dikerjakan di Mac atau layanan continuous integration berbasis macOS.

Kesimpulan

Flutter adalah framework UI open source dari Google yang memakai bahasa Dart untuk membangun aplikasi Android, iOS, web, dan desktop dari satu basis kode. Kekuatannya datang dari engine yang menggambar setiap piksel sendiri lewat Impeller. Dua mode kompilasi Dart melengkapinya: hot reload saat pengembangan, kode mesin saat rilis.

Flutter paling tepat untuk tim kecil yang membutuhkan aplikasi lintas platform dengan tampilan seragam. Untuk aplikasi yang bergantung pada fitur OS terbaru, atau website konten yang mengandalkan mesin pencari, pendekatan lain masih lebih sesuai.

Semoga artikel ini membantu.