Aplikita Enterprise - Struktur Project Flutter Memahami Folder File dan Arsitektur Dasarnya

Struktur Project Flutter: Memahami Folder, File, dan Arsitektur Dasarnya

Aplikita.com – Setelah berhasil menginstal dan menjalankan aplikasi pertama menggunakan Flutter, langkah berikutnya yang wajib dipahami adalah struktur project Flutter. Banyak pemula bisa menjalankan aplikasi, tetapi belum memahami fungsi setiap folder dan file yang ada di dalamnya. Padahal, pemahaman struktur project adalah fondasi penting sebelum masuk ke arsitektur yang lebih kompleks.

Saat kamu menjalankan perintah:

flutter create nama_project

Flutter akan menghasilkan struktur folder standar. Sekilas terlihat banyak, tetapi sebenarnya sangat sistematis dan terorganisir.

Folder utama yang paling sering kamu gunakan adalah folder lib/. Inilah pusat logika dan tampilan aplikasi. Di dalamnya biasanya terdapat file main.dart sebagai entry point aplikasi. File ini berisi fungsi main() yang akan menjalankan method runApp(). Hampir seluruh pengembangan aplikasi Flutter akan berfokus di dalam folder ini.

Contoh struktur dasar di dalam lib:

main.dart

screens/

widgets/

models/

services/

Walaupun Flutter hanya membuat main.dart secara default, praktik terbaiknya adalah memecah kode menjadi folder modular agar mudah dikelola ketika aplikasi berkembang.

File main.dart biasanya berisi konfigurasi awal seperti MaterialApp, routing, dan theme. Konsep ini erat kaitannya dengan pemahaman bahasa Dart karena seluruh komponen Flutter berbasis class dan widget.

Selanjutnya adalah file pubspec.yaml. Ini adalah salah satu file paling penting dalam project Flutter. File ini berfungsi sebagai:

Manajemen dependencies (library tambahan)

Konfigurasi assets (gambar, font, dll.)

Informasi metadata aplikasi

Ketika kamu menambahkan package seperti http, provider, atau lainnya, kamu akan menuliskannya di bagian dependencies pada pubspec.yaml, lalu menjalankan:

flutter pub get

Perintah ini akan mengunduh dan mengintegrasikan package ke dalam project.

Folder berikutnya adalah android/ dan ios/. Kedua folder ini berisi konfigurasi native untuk masing-masing platform. Biasanya kamu tidak perlu banyak mengubah isi folder ini kecuali untuk:

Mengubah nama package

Mengatur permission Android

Konfigurasi signing untuk release

Mengatur minimum SDK

Untuk target web, akan ada folder web/. Untuk desktop, muncul folder seperti windows/, macos/, dan linux/ jika diaktifkan.

Folder build/ digunakan untuk menyimpan hasil kompilasi sementara. Folder ini dihasilkan otomatis dan tidak perlu diedit secara manual.

Kemudian ada folder test/ yang digunakan untuk unit testing dan widget testing. Dalam skala produksi, folder ini menjadi sangat penting untuk menjaga kualitas aplikasi.

Jika kita melihat dari perspektif arsitektur, Flutter menganut pendekatan berbasis widget tree. Semua yang tampil di layar adalah widget, termasuk layout, teks, tombol, hingga container. Artinya struktur kode dalam folder lib sangat menentukan keterbacaan dan skalabilitas project.

Untuk project kecil, struktur sederhana seperti berikut sudah cukup:

lib/main.dart

lib/home_page.dart

Namun untuk project menengah hingga besar, sebaiknya gunakan struktur modular seperti:

lib/core/ (konstanta, theme, helper)

lib/features/ (berdasarkan fitur aplikasi)

lib/data/ (API dan database)

lib/presentation/ (UI layer)

lib/domain/ (business logic)

Pendekatan ini sering digunakan dalam implementasi Clean Architecture agar kode lebih terorganisir dan mudah diuji.

Penting juga memahami bahwa Flutter bersifat reactive. Artinya ketika state berubah, widget akan dibangun ulang (rebuild). Karena itu, pemisahan file berdasarkan tanggung jawab sangat membantu menghindari kode yang terlalu besar dan sulit dipelihara.

Banyak pemula melakukan kesalahan dengan menulis seluruh kode dalam satu file main.dart. Dalam jangka pendek memang berjalan, tetapi ketika aplikasi berkembang, struktur seperti itu akan menyulitkan debugging dan kolaborasi tim.

Memahami struktur project sejak awal akan membuat kamu lebih siap saat masuk ke materi state management, integrasi API, hingga arsitektur skala besar.

Dengan memahami fungsi folder seperti lib, android, ios, web, test, serta file penting seperti pubspec.yaml, kamu tidak hanya bisa menjalankan aplikasi Flutter, tetapi juga memahami bagaimana proyek tersebut dikelola secara profesional.

Pada artikel berikutnya, kita akan membahas konsep paling fundamental dalam Flutter, yaitu widget, serta perbedaan antara StatelessWidget dan StatefulWidget yang menjadi inti dari seluruh mekanisme UI Flutter.