"Flutter mastery dimulai dari fondasi Dart yang solid."
Project ini adalah kurikulum lengkap dan sistematis untuk menjadi Flutter Developer profesional dari nol. Memahami Dart secara mendalam adalah kunci utama sebelum terjun ke UI Flutter.
- Memahami Dart secara mendalam: Bukan sekadar hafal sintaks, tapi paham logikanya.
- Menguasai Flutter secara praktis: Belajar lewat praktek langsung.
- Mampu membuat aplikasi nyata: Siap untuk industri maupun freelance.
Kenapa kita belajar Dart? Karena Dart dirancang untuk:
- Produktivitas Tinggi: Fitur Hot Reload yang legendaris.
- Type Safety & Null Safety: Menghindari aplikasi crash di tangan pengguna.
- Semua adalah Object: Konsistensi dalam penulisan kode.
- Async First: Dibangun untuk aplikasi modern yang butuh koneksi internet.
Deskripsi: Fondasi paling awal: alat-alat yang diperlukan, cara menginstalnya per OS, dan verifikasi sampai project Flutter pertama bisa dijalankan. Tanpa ini, level berikutnya tidak bisa dijalankan dengan lancar. Langkah pertama di pathway resmi Flutter.
- Materi: Daftar tools (Flutter SDK, Dart, IDE, emulator/device, Git). Instalasi step-by-step untuk Windows, macOS, dan Linux. Alternatif DartPad untuk belajar tanpa install (Level 1β5). Error umum saat pertama kali konfigurasi dan cara mengatasinya. Setelah install: verifikasi (
flutter doctor,flutter doctor -v), project pertama (flutter create,flutter run), memilih device (flutter devices). - Tujuan: Lingkungan siap untuk menulis dan menjalankan kode Dart/Flutter; tahu kapan pakai DartPad vs VS Code/emulator; bisa mengatasi error konfigurasi pertama.
- Referensi: Panduan lengkap di 00-tools-dan-setup. Flutter Install, Quick install, DartPad.
Deskripsi: Memahami jenis-jenis data. Tanpa ini, kita tidak tahu apa yang sedang diproses oleh aplikasi.
- Primitive:
int,double,num,String,bool. - Collections:
List,Set,Map,Iterable. - Special:
dynamic,void,Never,Object. - Modern Dart:
Nullable Type (?),Record Type,Enum,Typedef, Generics (List<T>,Future<T>β untuk collection dan kode reusable, sering dipakai di Flutter sepertiList<Widget>). - Async Types:
Future,Stream. - Tujuan: Mampu memilih tipe data yang tepat dan menghindari bug "Type Error".
Deskripsi: Belajar cara menyimpan data di memori secara efisien.
- Keywords:
var,final,const,late. - Scope: Global, Local, dan Block Scope.
- Tujuan: Mengelola lifecycle variabel dan menulis kode aman dari error null.
Deskripsi: Memberi "otak" pada aplikasi untuk berhitung dan mengambil keputusan.
- Operators: Aritmatika, Perbandingan, Logika, dan Null-aware (
??,?.). - Control Flow:
If-Else,Loop(For, While),Switch Case(Pattern Matching). - Error Handling (dasar):
try/catch,throw,rethrowβ perkenalan di sini; konteks HTTP/API akan dibahas lagi di Level 9. - Tujuan: Menguasai logika alur aplikasi yang kompleks.
Deskripsi: Menerapkan prinsip DRY (Don't Repeat Yourself).
- Materi: Positional, Named, & Optional Parameters, Arrow Syntax, Anonymous Functions.
- Tujuan: Menulis kode yang modular, rapi, dan mudah diuji.
Deskripsi: Flutter adalah framework berbasis OOP. Level ini adalah yang terpenting.
- Materi:
Class,Inheritance,Abstract Class,Mixin,Interface,Encapsulation. - Tujuan: Memahami arsitektur aplikasi skala besar (Enterprise).
Deskripsi: Memakai dan mengelola dependency (paket pihak ketiga). Diperkenalkan saat mulai Flutter agar bisa memakai paket seperti http/dio dengan benar.
- Materi:
pubspec.yaml,flutter pub get, menambah dependency dari pub.dev, versi (semver),dev_dependencies. - Tujuan: Bisa memanfaatkan ekosistem paket Flutter/Dart dengan aman.
Deskripsi: Mengubah kode menjadi UI nyata yang cantik. Sesuai pathway resmi: layout β DevTools β user input β stateful widgets.
- Materi:
Stateless vs Stateful,Scaffold,Container,Row & Column,Padding,Center. - User Input:
GestureDetector,TextField,Form, tombol (ElevatedButton, TextButton, dll.). - DevTools: Flutter DevTools untuk debug layout dan performance.
- Tujuan: Memahami bagaimana membangun layout yang responsif dan menangani interaksi pengguna.
Deskripsi: Memberi umpan visual (feedback) dan transisi yang halus. Pathway resmi: Add implicit animations setelah stateful widgets.
- Materi: Implicit animations (
AnimatedContainer,AnimatedOpacity), explicit animations dasar (AnimationController,Tween), transisi (Hero, PageRouteBuilder). - Tujuan: UI terasa hidup dan responsif terhadap interaksi.
Deskripsi: Mengelola perubahan data agar UI tetap sinkron.
- Pilihan:
setState,Provider,Riverpod, atauBloc/Cubit. - Tujuan: Membuat aplikasi yang scalable dan mudah dipelihara.
Deskripsi: Mengatur alur perpindahan halaman.
- Materi:
Navigator,Named Routes,GoRouter. - Tujuan: Alur navigasi aplikasi yang mulus dan profesional.
Deskripsi: Menghubungkan aplikasi ke internet.
- Materi:
HTTP Request,JSON Parsing,Dio,Error Handling. - Tujuan: Mampu membuat aplikasi yang dinamis dengan data real-time.
Deskripsi: Menyimpan data di perangkat tanpa selalu mengandalkan API. Penting untuk preferensi, cache, dan data offline.
- Materi: Key-value (
shared_preferences), file (path_provider,dart:ioFile), database lokal (SQLite viasqfliteatau Hive). - Tujuan: Aplikasi bisa menyimpan dan memuat data lokal dengan benar.
- Referensi: Persistence, Data and backend
Deskripsi: Menghubungkan aplikasi ke Firebase: autentikasi dan database cloud tanpa mengelola server sendiri.
- Materi: Setup Firebase (FlutterFire CLI / konfigurasi Android & iOS), Firebase Auth (register, login email/password, logout, auth state stream), Cloud Firestore (koleksi, dokumen, CRUD, rules dasar). Opsional: Realtime Database, FCM, Crashlytics.
- Tujuan: Mampu memakai Auth dan Firestore di aplikasi Flutter; paham kapan memilih BaaS vs REST API (Level 9) atau persistence lokal (Level 10).
- Referensi: Firebase for Flutter, FlutterFire CLI
Deskripsi: Memastikan kode dan UI berperilaku benar; penting menuju level expert.
- Materi: Unit test (package
test), Widget test (flutter_test), Integration test (packageintegration_test), menjalankanflutter test. - Tujuan: Menulis aplikasi yang bisa diuji dan lebih mudah dipelihara.
- Referensi: Unit testing, Integration tests
Deskripsi: Mempublikasikan karya ke dunia.
- Materi:
Build Release,App Icon & Splash Screen,Play Store & App Store. - Tujuan: Memahami proses rilis aplikasi dari awal sampai akhir.
Deskripsi: Pemahaman mendalam agar bisa mengoptimalkan dan debug dengan baik. Langkah terakhir di pathway resmi.
- Materi: Widget tree, element tree, render tree, lifecycle widget, rendering pipeline, mengapa Flutter "declarative".
- Tujuan: Memanfaatkan framework secara penuh dan menyelesaikan masalah performa/debug dengan tepat.
Deskripsi: Mengorganisir kode dan layer agar proyek Flutter scalable, mudah diuji, dan enak dipeliharaβpenting untuk aplikasi production dan kerja tim.
- Materi: Struktur folder (feature-based vs layer-based), separation of concerns (UI / logic / data), Clean Architecture / Feature-first, dependency injection (get_it, riverpod), environment & config, konvensi penamaan dan modularitas.
- Tujuan: Mampu merancang dan memelihara proyek Flutter dengan arsitektur yang rapi dan siap berkembang.
- Referensi: 15-arsitektur-proyek
Deskripsi: Mengatur konfigurasi bergantung environment (base URL, API key, debug/prod) tanpa hardcodeβpenting untuk keamanan dan multi-environment.
- Materi: Konsep environment di Flutter vs web; perbandingan flutter_dotenv, --dart-define / --dart-define-from-file, Envied; di mana memakai env (API URL, API key, feature flag); praktik aman (.env.example, .gitignore, CI/CD).
- Tujuan: Memilih pola config yang sesuai dan menerapkannya di project (contoh praktik di Level 9).
- Referensi: 16-environment-config, 09-api-networking (contoh flutter_dotenv)
Deskripsi: UI yang lebih kompleks dan responsif untuk aplikasi production.
- Materi: Adaptive layout (phone/tablet/desktop), scrolling lanjutan (
CustomScrollView, Slivers), advanced layout constraints. - Referensi: Advanced UI, Adaptive layout, Slivers
Timeline direvisi agar lebih realistis: state management dan API dipisah per minggu, dengan ruang untuk persistence, testing, dan proyek integrasi.
| Minggu | Fokus Materi | Proyek Praktek |
|---|---|---|
| 0 | Tools & Setup Lingkungan β install + verifikasi + project pertama (atau pakai DartPad untuk Level 1β5) | Cek flutter doctor, flutter create, flutter run / coba DartPad |
| 1 | Setup + Data Types & Variables | Logic Quiz (CLI) |
| 2 | Operators, Control Flow, Error handling + Functions | Calculator CLI |
| 3 | OOP Deep Dive | Simulasi Bank (CLI) |
| 4 | Package management (dasar) + Widget Basics + User input + DevTools | Counter App |
| 5 | Animasi dasar | Animasi sederhana (mis. di Counter) |
| 6 | State Management (setState β Provider/Riverpod) | Todo App atau daftar dinamis |
| 7 | Navigation & Routing | Multi-screen app |
| 8 | API & Networking | Weather App (atau app dengan API) |
| 9 | Persistence (local storage) | Simpan preferensi atau cache data |
| 10 | Firebase (Auth + Firestore) | App dengan login + data cloud |
| 11 | Testing dasar (unit + widget test) | Menambah test ke proyek existing |
| 12β13 | Proyek integrasi + Deployment + How Flutter works | E-Commerce Mini + rilis |
| 14 | Arsitektur Proyek Flutter (struktur folder, Clean Arch, DI) | Review struktur / refactor proyek |
| 15 | Level 16: Environment & Config (dart-define, Flavors, praktik aman) | Config base URL / env di project API atau refactor |
Sesuaikan kecepatan dengan kemampuan; bisa diperpanjang atau dipadatkan.
flowchart LR
subgraph dart [Dart Foundation]
L0[Setup]
L1[Data Types]
L2[Variables]
L3[Control Flow]
L4[Functions]
L5[OOP]
end
subgraph flutter [Flutter]
L6[Widgets + Input + DevTools]
L6b[Animations]
L7[State]
L8[Navigation]
L9[API]
L10[Persistence]
L11[Firebase]
L12[Testing]
L13[Deploy]
L14[How Flutter Works]
L15[Arsitektur]
end
L0 --> L1 --> L2 --> L3 --> L4 --> L5 --> L6 --> L6b --> L7 --> L8 --> L9 --> L10 --> L11 --> L12 --> L13 --> L14 --> L15
- Coding Tiap Hari: Minimal 30 menit.
- Jangan Takut Error: Error adalah guru terbaik di pemrograman.
- Praktek > Teori: Langsung buat project kecil setiap selesai satu level.
Setelah menyelesaikan semua level, kamu akan: β Menguasai Dart secara mendalam. β Mampu membangun aplikasi Flutter yang kompleks. β Siap berkarir sebagai Flutter Developer (Freelance/Full-time).
- Flutter Learn Pathway β urutan resmi: install β Dart β Flutter tutorial β How Flutter works.
- Dart Learn β tutorial Dart, type system, control flow, classes, async, null safety.
- Flutter Persistence β key-value, file, SQLite.
- Flutter Testing β unit dan widget test.
![]() |
|---|
| Kukuh Nova Putra |
| Creator & Maintainer |
Ingin berkontribusi? Silakan buka issue atau kirim Pull Request. Kontribusi (koreksi typo, penjelasan materi, contoh kode, atau terjemahan) sangat diterima.
Selamat Level Up! π
