✦ Selamat Idul Fitri 1447 H 🌙 Taqabbalallahu minna wa minkum. Mohon maaf lahir dan batin. ✦
ALFAkwt

Cara Saya Belajar Flutter Tanpa Latar Belakang Mobile Development

· 0 komentar · ± 4 menit baca · 👁 70 dilihat

Saya bukan mobile developer. Latar belakang saya PHP dan Python — web, bukan mobile. Jadi ketika pertama kali dengar Flutter, reaksi pertama saya bukan antusias. Lebih ke: ini perlu dipelajari gak ya?

Ternyata perlu. Dan jalannya lebih mulus dari yang saya kira — tapi juga lebih berliku dari yang dijanjikan tutorial-tutorial di YouTube.

Kenapa Flutter, Bukan React Native?

Waktu saya mulai serius pertimbangkan bikin aplikasi Android, ada dua kandidat utama: Flutter dan React Native. Saya coba keduanya selama beberapa minggu.

React Native lebih familiar karena sintaksnya mirip JavaScript/JSX. Tapi ekosistemnya terasa lebih berantakan — banyak library yang tidak aktif di-maintain, error message yang kadang misterius, dan pengalaman debugging yang tidak menyenangkan.

Flutter terasa asing di awal — Dart adalah bahasa baru yang harus dipelajari dari nol. Tapi begitu sudah lewat tahap awal itu, semuanya terasa lebih konsisten. Hot reload-nya cepat, dokumentasinya bagus, dan komunitas Indonesia-nya cukup aktif untuk tempat bertanya.

Saya pilih Flutter. Keputusan yang tidak pernah saya sesali.

Dart Tidak Sesulit Kelihatannya

Ini yang bikin banyak orang ragu: harus belajar bahasa baru. Dart bukan bahasa yang populer di luar ekosistem Flutter.

Tapi kalau Anda sudah pernah menyentuh bahasa lain — PHP, JavaScript, Python — Dart itu mengejutkan familiarnya. Syntax-nya lebih rapi dari PHP menurut saya, type system-nya membantu lebih dari menghalangi, dan null safety-nya yang strict di awal memang bikin frustasi tapi lama-lama Anda akan bersyukur.

Yang paling berbeda dari PHP adalah cara Dart menangani asynchronous. Di PHP, saya terbiasa dengan kode yang berjalan satu per satu dari atas ke bawah. Di Dart, ada async, await, Future, dan Stream yang perlu dipahami. Saya butuh dua minggu penuh sampai benar-benar paham bedanya Future dan Stream.

// Ini biasa saya tulis dulu tanpa paham kenapa
Future<String> ambilData() async {
final response = await http.get(uri);
return response.body;
}
// Baru setelah paham: Future = satu nilai yang datang nanti
// Stream = nilai yang datang berkali-kali seiring waktu

Penjelasan sederhana itu — yang saya temukan di komentar Stack Overflow yang tidak terlalu populer — membuka banyak hal sekaligus.

Widget yang Membingungkan di Awal

Di Flutter, semuanya adalah widget. Teks adalah widget. Padding adalah widget. Bahkan layout Row dan Column adalah widget. Ini konsep yang terasa aneh kalau background-nya HTML/CSS, di mana layout diatur lewat properti CSS terpisah dari konten.

Saya butuh waktu untuk benar-benar nyaman dengan pendekatan ini. Awalnya kode saya nested terlalu dalam — widget di dalam widget di dalam widget sampai seperti piramida maya. Lama-lama saya belajar kapan harus memecah widget besar jadi komponen-komponen yang lebih kecil.

Satu insight yang paling mengubah cara saya menulis Flutter: widget itu murah untuk dibuat. Berbeda dari perubahan DOM di web yang mahal, Flutter dirancang agar membuat banyak widget kecil tidak menjadi masalah performa. Jadi tidak perlu takut memecah UI jadi banyak widget kecil — justru itu yang disarankan.

State Management: Pilihan yang Bikin Pusing

Ini yang paling membingungkan di ekosistem Flutter: terlalu banyak pilihan state management. Provider, Riverpod, Bloc, GetX, MobX — setiap tutorial sepertinya pakai yang berbeda.

Saran saya untuk pemula: mulai dengan setState yang paling sederhana sampai Anda benar-benar merasa keterbatasannya. Baru setelah itu pindah ke solusi yang lebih kompleks.

Saya sendiri sekarang pakai Riverpod untuk proyek yang lebih dari satu layar. Tapi saya tidak langsung ke sana — saya mulai dari setState, ngerasain sendiri keterbatasannya ketika proyek mulai kompleks, baru pindah.

Kalau langsung belajar Riverpod dari awal tanpa pernah pakai setState, Anda mungkin bisa menggunakannya tapi tidak akan benar-benar mengerti mengapa ia ada.

Proyek Pertama: Sederhana Tapi Selesai

Proyek Flutter pertama saya yang selesai sampai bisa diinstall di HP sendiri adalah aplikasi catatan sederhana — judul, isi, tanggal. Tidak ada sync ke server, tidak ada login, tidak ada yang fancy. Data disimpan lokal pakai SharedPreferences.

Kodenya pasti bikin malu kalau saya buka sekarang. Widget yang tidak perlu, logika yang bisa disederhanakan, tidak ada error handling. Tapi ia selesai. Bisa diinstall. Bisa dipakai.

Dan itu yang paling penting di awal perjalanan belajar apapun: selesaikan sesuatu yang kecil dulu. Momentum dari satu proyek yang selesai jauh lebih berharga dari sepuluh proyek yang ditinggal di tengah jalan.

Yang Masih Saya Pelajari

Saya tidak mau pura-pura sudah jago. Flutter itu dalamnya luar biasa — rendering pipeline, isolate, platform channel untuk kode native, accessibility — ada banyak yang masih belum saya kuasai sepenuhnya.

Tapi saya tidak lagi merasa "asing" dengan ekosistemnya. Ketika ada masalah, saya tahu harus mulai mencarinya di mana. Dan itu sudah setengah dari perjalanan.

Kalau Anda dari background web dan lagi pikir-pikir mau coba Flutter — coba saja. Kurva belajarnya ada, tapi tidak seterjal yang orang bilang. Dan hasilnya — bisa bikin aplikasi Android yang jalan di HP nyata — itu kepuasan yang berbeda dari bikin website.

Ada yang senasib, belajar Flutter dari background non-mobile? Cerita dong di komentar, pengalaman Anda pasti beda-beda dan saya suka bacanya.


Komentar

Belum ada komentar. Jadilah yang pertama menulis.

Tulis Komentar