Jika Anda sudah memahami dasar-dasar pemrograman, langkah berikutnya dalam roadmap belajar Flutter dari nol sampai siap kerja adalah mempelajari bahasa pemrograman yang digunakan Flutter, yaitu Dart.
Flutter memang menyediakan framework untuk membangun aplikasi, tetapi logika di dalam aplikasi Flutter tetap ditulis menggunakan Dart. Karena itu, memahami Dart bukan sekadar tambahan, melainkan salah satu fondasi penting sebelum mulai membuat aplikasi Flutter secara serius.
Bagi pemula, Dart sebenarnya cukup ramah untuk dipelajari. Sintaksnya relatif mudah dibaca, memiliki konsep pemrograman modern, mendukung object-oriented programming (OOP), asynchronous programming, null safety, dan berbagai fitur yang dibutuhkan untuk membangun aplikasi modern.
Dalam artikel ini, kita akan belajar Dart dari nol secara bertahap, mulai dari mengenal Dart, cara menjalankan kode, variabel, tipe data, operator, percabangan, perulangan, function, collection, null safety, hingga konsep OOP.
Apa Itu Dart?
Dart adalah bahasa pemrograman yang dikembangkan oleh Google dan digunakan sebagai bahasa utama untuk membangun aplikasi Flutter.
Dart dirancang sebagai bahasa general-purpose yang dapat digunakan untuk berbagai kebutuhan pengembangan software, tetapi saat ini Dart sangat erat kaitannya dengan ekosistem Flutter.
Dengan Dart, developer dapat menulis:
- logika aplikasi,
- pengolahan data,
- function,
- class dan object,
- komunikasi asynchronous,
- pengelolaan state,
- integrasi API,
- hingga berbagai komponen aplikasi Flutter.
Sederhananya:
Flutter = framework untuk membangun aplikasi
Dart = bahasa pemrograman yang digunakan untuk menulis kode Flutter
Karena itu, sebelum terlalu jauh mempelajari widget, navigation, API, database, atau state management, Anda sebaiknya memahami dasar Dart terlebih dahulu.
Mengapa Harus Belajar Dart Sebelum Flutter?
Belajar Dart setelah memahami dasar pemrograman sebelum belajar Flutter adalah keputusan yang tepat untuk Pemula
Salah satu kesalahan yang cukup sering dilakukan pemula adalah langsung membuat aplikasi Flutter tanpa memahami bahasa Dart.
Akibatnya, ketika menemukan kode seperti:
class Product {
String name;
double price;
Product(this.name, this.price);
}
pemula mungkin akan memahami bahwa kode tersebut berkaitan dengan data produk, tetapi belum tentu memahami apa fungsi class, String, double, constructor, dan parameter di dalamnya.
Padahal konsep-konsep tersebut merupakan bagian dari bahasa Dart. Dengan memahami Dart terlebih dahulu, Anda akan lebih mudah memahami kode Flutter.
Beberapa manfaat belajar Dart sebelum Flutter antara lain:
1. Lebih mudah membaca kode Flutter
Flutter menggunakan banyak konsep Dart seperti:
- variable,
- function,
- class,
- object,
- list,
- map,
- conditional,
- loop,
- asynchronous programming,
- null safety.
Semakin kuat pemahaman Dart, semakin mudah membaca kode Flutter.
2. Lebih mudah memahami error
Ketika aplikasi mengalami error, Anda tidak hanya mengandalkan copy-paste solusi dari internet.
Anda dapat memahami apakah masalahnya berasal dari:
- tipe data,
- variable,
- function,
- object,
- null value,
- asynchronous process,
- atau bagian lainnya.
3. Lebih mudah membuat logic aplikasi
Flutter bertugas membangun interface dan struktur aplikasi, sedangkan Dart digunakan untuk menulis berbagai logic di dalamnya.
Misalnya:
User menekan tombol
↓
Function dijalankan
↓
Data diproses
↓
API dipanggil
↓
Response diterima
↓
UI diperbarui
Sebagian besar proses tersebut membutuhkan pemahaman Dart.
Cara Menjalankan Dart
Untuk mulai belajar Dart, Anda tidak harus langsung membuat project Flutter.
Salah satu cara paling sederhana adalah menggunakan DartPad, sehingga Anda dapat mencoba kode Dart langsung tanpa melakukan konfigurasi yang kompleks.
Contoh kode sederhana:
void main() {
print('Hello, Dart!');
}
Output:
Hello, Dart!
Function main() merupakan titik awal eksekusi program Dart.
Ketika program dijalankan, Dart akan mulai mengeksekusi kode dari function tersebut.
Struktur Dasar Program Dart
Program Dart paling sederhana dapat terlihat seperti ini:
void main() {
print('Hello World');
}
Mari kita uraikan.
void
void menunjukkan bahwa function tersebut tidak mengembalikan sebuah nilai.
main()
main() merupakan function utama yang menjadi entry point program.
{ }
Kurung kurawal digunakan untuk menandai blok kode.
print()
print() digunakan untuk menampilkan informasi ke console.
Contoh lain:
void main() {
print('Saya sedang belajar Dart');
print('Dart digunakan untuk Flutter');
}
Output:
Saya sedang belajar Dart
Dart digunakan untuk Flutter
1. Variabel di Dart
Variabel digunakan untuk menyimpan data.
Contohnya:
String nama = 'Andi';
int umur = 25;
double tinggi = 170.5;
Pada contoh tersebut:
namamenyimpan teks,umurmenyimpan bilangan bulat,tinggimenyimpan bilangan desimal.
Kita dapat menampilkan nilainya:
void main() {
String nama = 'Andi';
int umur = 25;
print(nama);
print(umur);
}
2. var, final, dan const
Dart menyediakan beberapa cara untuk mendeklarasikan variable.
Menggunakan var
var nama = 'Andi';
Dart dapat mengetahui bahwa variable tersebut memiliki tipe String.
Contoh:
var umur = 25;
Dart akan mengenali umur sebagai int.
Menggunakan final
final digunakan ketika nilai variable hanya perlu ditentukan satu kali.
final nama = 'Andi';
Setelah diberikan nilai, variable tersebut tidak dapat diberikan nilai baru.
Menggunakan const
const digunakan untuk nilai yang bersifat konstan dan diketahui pada waktu compile.
const pi = 3.14;
Dalam Flutter, Anda akan cukup sering menemukan penggunaan const.
Contohnya:
const Text('Hello Flutter');
Karena itu, memahami perbedaan var, final, dan const akan sangat membantu ketika mulai belajar Flutter.
3. Tipe Data Dart
Beberapa tipe data penting yang perlu dipahami adalah:
| Tipe Data | Contoh |
|---|---|
String | 'Flutter' |
int | 10 |
double | 10.5 |
num | 10 atau 10.5 |
bool | true |
List | [1, 2, 3] |
Map | {'nama': 'Andi'} |
Set | {1, 2, 3} |
Mari kita bahas satu per satu.
4. String
String digunakan untuk menyimpan teks.
String nama = 'Raja Putra Media';
Dart juga mendukung string interpolation.
String nama = 'Andi';
int umur = 25;
print('Nama saya $nama');
print('Umur saya $umur tahun');
Hasil:
Nama saya Andi
Umur saya 25 tahun
Anda juga dapat menggunakan ekspresi:
int harga = 50000;
int jumlah = 2;
print('Total: ${harga * jumlah}');
Hasil:
Total: 100000
String interpolation akan sangat sering digunakan ketika membuat aplikasi Flutter.
5. Integer dan Double
int digunakan untuk bilangan bulat.
int umur = 25;
Sedangkan double digunakan untuk bilangan desimal.
double berat = 65.5;
Dart juga menyediakan num:
num nilai = 10;
nilai = 10.5;
num dapat menyimpan nilai integer maupun double.
6. Boolean
bool hanya memiliki dua kemungkinan nilai:
true
atau:
false
Contoh:
bool sudahLogin = true;
Boolean sangat penting dalam logic aplikasi.
Misalnya:
if (sudahLogin) {
print('Selamat datang');
}
7. Operator di Dart
Operator digunakan untuk melakukan berbagai operasi terhadap data.
Operator aritmatika
int a = 10;
int b = 3;
print(a + b);
print(a - b);
print(a * b);
print(a / b);
print(a % b);
Operator tersebut masing-masing digunakan untuk:
- penjumlahan,
- pengurangan,
- perkalian,
- pembagian,
- modulus.
Operator perbandingan
10 == 10
10 != 5
10 > 5
10 < 20
10 >= 10
10 <= 20
Hasilnya berupa true atau false.
Contoh:
int umur = 20;
print(umur >= 18);
Output:
true
8. Operator Logika
Dart menyediakan operator logika seperti:
&&
||
!
Contoh:
int umur = 25;
bool memilikiKtp = true;
if (umur >= 17 && memilikiKtp) {
print('Memenuhi syarat');
}
&& berarti kedua kondisi harus benar.
Sedangkan || berarti salah satu kondisi cukup benar.
Contoh:
bool admin = false;
bool moderator = true;
if (admin || moderator) {
print('Memiliki akses');
}
9. Percabangan if
Percabangan digunakan ketika program harus mengambil keputusan.
Contoh:
int nilai = 80;
if (nilai >= 75) {
print('Lulus');
} else {
print('Tidak lulus');
}
Kita juga dapat menggunakan else if.
int nilai = 85;
if (nilai >= 90) {
print('A');
} else if (nilai >= 80) {
print('B');
} else if (nilai >= 70) {
print('C');
} else {
print('D');
}
Konsep seperti ini akan sering digunakan dalam logic aplikasi Flutter.
10. Switch
Selain if, Dart juga mendukung switch.
String role = 'admin';
switch (role) {
case 'admin':
print('Halaman Admin');
break;
case 'user':
print('Halaman User');
break;
default:
print('Role tidak dikenal');
}
switch berguna ketika sebuah nilai memiliki beberapa kemungkinan kondisi.
11. Perulangan di Dart
Perulangan digunakan untuk menjalankan kode secara berulang.
For loop
for (int i = 1; i <= 5; i++) {
print(i);
}
Output:
1
2
3
4
5
While loop
int i = 1;
while (i <= 5) {
print(i);
i++;
}
For-in
Ketika bekerja dengan collection, for-in sangat berguna.
List<String> buah = [
'Apel',
'Jeruk',
'Mangga'
];
for (var item in buah) {
print(item);
}
Output:
Apel
Jeruk
Mangga
Konsep ini akan sangat sering digunakan ketika menampilkan data dalam aplikasi Flutter.
12. Function di Dart
Function digunakan untuk mengelompokkan logic tertentu agar dapat digunakan kembali.
Contoh:
void sapa() {
print('Halo!');
}
Untuk menjalankannya:
sapa();
Function juga dapat menerima parameter.
void sapa(String nama) {
print('Halo $nama');
}
sapa('Andi');
Output:
Halo Andi
13. Function dengan Return Value
Function dapat mengembalikan nilai.
int tambah(int a, int b) {
return a + b;
}
Kemudian:
int hasil = tambah(10, 20);
print(hasil);
Output:
30
Anda juga akan sering menemukan function seperti ini ketika membangun logic aplikasi Flutter.
14. Arrow Function
Dart memiliki sintaks singkat untuk function sederhana.
Contoh:
int tambah(int a, int b) => a + b;
Kode tersebut memiliki fungsi yang sama dengan:
int tambah(int a, int b) {
return a + b;
}
Arrow function akan cukup sering muncul dalam kode Flutter.
15. List
List digunakan untuk menyimpan beberapa data dalam satu variable.
List<String> nama = [
'Andi',
'Budi',
'Citra'
];
Untuk mengakses data:
print(nama[0]);
Hasil:
Andi
Index pada List dimulai dari 0.
Sehingga:
nama[0] = Andi
nama[1] = Budi
nama[2] = Citra
Anda juga dapat menambahkan data:
nama.add('Deni');
Menghapus data:
nama.remove('Budi');
Mengecek jumlah data:
print(nama.length);
16. Map
Map digunakan untuk menyimpan pasangan key dan value.
Contoh:
Map<String, dynamic> user = {
'nama': 'Andi',
'umur': 25,
'aktif': true
};
Untuk mengambil data:
print(user['nama']);
Output:
Andi
Map sangat penting ketika bekerja dengan data JSON dari REST API.
Misalnya response API:
{
"name": "Andi",
"age": 25
}
Data seperti ini nantinya akan banyak Anda temui ketika mempelajari integrasi API di Flutter.
17. Set
Set digunakan untuk menyimpan data unik.
Set<String> kategori = {
'Flutter',
'Dart',
'Flutter'
};
Karena Set hanya menyimpan nilai unik, hasilnya akan menjadi:
Flutter
Dart
18. Null Safety di Dart
Salah satu konsep penting dalam Dart modern adalah null safety. Null safety membantu mencegah error ketika sebuah variable memiliki kemungkinan tidak memiliki nilai.
Contoh variable yang tidak boleh null:
String nama = 'Andi';
Sedangkan variable yang boleh memiliki nilai null menggunakan tanda ?.
String? nama;
Sekarang nama dapat berisi:
Andi
atau:
null
Contoh:
String? nama;
print(nama);
Hasilnya:
null
19. Null-Aware Operator
Dart memiliki berbagai operator yang membantu menangani null.
Contohnya:
String? nama;
print(nama ?? 'Guest');
Jika nama bernilai null, program menggunakan 'Guest'.
Output:
Guest
Konsep seperti ? dan ?? akan sangat penting ketika Anda mulai mengambil data dari API atau database.
20. Class dan Object
Dart merupakan bahasa yang mendukung Object-Oriented Programming atau OOP. Class dapat digunakan sebagai blueprint untuk membuat object.
Contoh:
class User {
String nama;
int umur;
User(this.nama, this.umur);
}
Kemudian membuat object:
void main() {
User user = User('Andi', 25);
print(user.nama);
print(user.umur);
}
Konsep ini sangat penting dalam Flutter karena hampir seluruh struktur aplikasi Flutter banyak menggunakan class dan object.
21. Constructor
Constructor digunakan ketika object dibuat.
Contoh:
class Product {
String nama;
double harga;
Product(this.nama, this.harga);
}
Kemudian:
Product produk = Product('Laptop', 10000000);
Sekarang object produk memiliki:
nama = Laptop
harga = 10000000
Memahami constructor akan membantu Anda membaca berbagai kode Flutter dengan lebih mudah.
22. Method
Function yang berada di dalam class disebut method.
Contoh:
class User {
String nama;
User(this.nama);
void sapa() {
print('Halo, saya $nama');
}
}
Kemudian:
User user = User('Andi');
user.sapa();
Output:
Halo, saya Andi
23. Inheritance
Dart juga mendukung inheritance.
Contoh:
class Animal {
void makan() {
print('Animal sedang makan');
}
}
class Cat extends Animal {
void meong() {
print('Meong');
}
}
Kemudian:
Cat kucing = Cat();
kucing.makan();
kucing.meong();
Class Cat mewarisi method dari Animal.
Konsep inheritance merupakan salah satu konsep OOP yang perlu Anda pahami sebelum masuk lebih jauh ke Flutter.
24. Asynchronous Programming
Aplikasi modern sering melakukan proses yang membutuhkan waktu.
Contohnya:
- mengambil data dari API,
- membaca database,
- upload file,
- download data,
- melakukan autentikasi.
Dart menggunakan konsep asynchronous programming untuk menangani proses tersebut.
Salah satu konsep penting adalah Future.
Contoh:
Future<String> ambilData() async {
return 'Data berhasil diambil';
}
Kemudian menggunakan await:
void proses() async {
String data = await ambilData();
print(data);
}
Anda tidak perlu langsung menguasai asynchronous programming secara mendalam pada tahap awal, tetapi sebaiknya sudah memahami konsep dasarnya.
25. Error Handling
Program tidak selalu berjalan sesuai harapan. Dart menyediakan try, catch, dan finally untuk menangani error.
Contoh:
try {
int hasil = 10 ~/ 0;
print(hasil);
} catch (e) {
print('Terjadi error: $e');
}
Dengan error handling, aplikasi dapat menangani masalah dengan lebih terkontrol.
26. Cascade Notation
Dart memiliki fitur yang cukup unik bernama cascade notation.
Contoh:
var list = <String>[];
list
..add('Flutter')
..add('Dart')
..add('Programming');
Cascade memungkinkan beberapa operasi dilakukan terhadap object yang sama.
Fitur seperti ini mungkin terlihat asing pada awalnya, tetapi Anda akan semakin sering menemukannya ketika membaca kode Dart dan Flutter.
27. Collection Methods
Dart memiliki banyak method untuk mengolah collection.
Contohnya:
List<int> angka = [1, 2, 3, 4, 5];
Menggunakan where:
var hasil = angka.where((item) => item > 2);
Menggunakan map:
var hasil = angka.map((item) => item * 2);
Konsep seperti map, where, forEach, reduce, dan fold nantinya sangat berguna ketika mengolah data dalam aplikasi Flutter.
Contoh Program Dart Sederhana
Setelah memahami konsep dasar, kita dapat menggabungkannya menjadi sebuah program sederhana.
class Product {
String nama;
int harga;
Product(this.nama, this.harga);
void tampilkan() {
print('$nama - Rp$harga');
}
}
void main() {
List<Product> products = [
Product('Laptop', 10000000),
Product('Mouse', 250000),
Product('Keyboard', 750000),
];
for (var product in products) {
product.tampilkan();
}
}
Program tersebut sudah menggabungkan beberapa konsep:
- class,
- object,
- constructor,
- List,
- function,
- loop,
- string interpolation.
Inilah alasan mengapa memahami konsep dasar Dart secara bertahap sangat penting.
Mini Project untuk Latihan Dart
Setelah mempelajari dasar Dart, jangan berhenti hanya pada membaca teori. Buatlah mini project sederhana. Salah satu latihan yang cocok adalah Program Data Produk.
Fitur yang dapat dibuat:
- Menambahkan produk.
- Menampilkan daftar produk.
- Menampilkan harga.
- Menghitung total harga.
- Mencari produk berdasarkan nama.
- Menghapus produk.
- Menghitung jumlah produk.
Contoh sederhana:
=== DATA PRODUK ===
1. Laptop Rp10.000.000
2. Mouse Rp250.000
3. Keyboard Rp750.000
Total Produk: 3
Mini project seperti ini membantu menghubungkan teori dengan praktik.
Urutan Belajar Dart untuk Pemula
Agar tidak bingung, Anda dapat mempelajari Dart dengan urutan berikut:
Tahap 1 — Basic Syntax
Pelajari:
main()print()- komentar
- variable
- tipe data
Tahap 2 — Logic
Pelajari:
- operator,
if,else,switch,for,while.
Tahap 3 — Function
Pelajari:
- parameter,
- return value,
- optional parameter,
- named parameter,
- arrow function.
Tahap 4 — Collection
Pelajari:
- List,
- Map,
- Set,
- collection methods.
Tahap 5 — Null Safety
Pelajari:
- nullable variable,
?,??,- null-aware access.
Tahap 6 — OOP
Pelajari:
- class,
- object,
- constructor,
- property,
- method,
- inheritance,
- abstraction,
- encapsulation.
Tahap 7 — Asynchronous Programming
Pelajari:
- Future,
- async,
- await,
- error handling.
Setelah seluruh bagian tersebut cukup dipahami, Anda sudah memiliki fondasi Dart yang jauh lebih siap untuk memasuki Flutter.
Apakah Harus Menguasai Dart 100% Sebelum Belajar Flutter?
Tidak. Anda tidak perlu menunggu sampai menguasai seluruh fitur Dart sebelum mulai belajar Flutter.
Target pada tahap ini adalah memiliki pemahaman fundamental yang cukup untuk membaca dan menulis kode Dart sederhana.
Minimal Anda sebaiknya sudah memahami:
- variable,
- tipe data,
- operator,
- conditional,
- loop,
- function,
- List,
- Map,
- null safety,
- class,
- object,
- constructor,
- method,
- Future,
- async,
- await.
Setelah itu, Anda dapat mulai belajar Flutter sambil memperdalam Dart melalui praktik.
Pendekatan ini biasanya lebih efektif daripada mencoba menghafalkan seluruh dokumentasi Dart terlebih dahulu.
Kesalahan yang Sering Dilakukan Saat Belajar Dart
Ada beberapa kesalahan yang sebaiknya dihindari.
Terlalu Banyak Menghafal Syntax
Pemrograman bukan tentang menghafal seluruh syntax.
Yang lebih penting adalah memahami:
"Masalah apa yang ingin diselesaikan dan konsep apa yang dapat digunakan?"
Langsung Belajar Flutter Tanpa Memahami Dart
Jika Anda belum memahami variable, function, class, object, dan collection, kode Flutter dapat terasa jauh lebih sulit.
Hanya Menonton Tutorial
Menonton tutorial memang membantu, tetapi tidak cukup.
Setelah melihat contoh:
int tambah(int a, int b) {
return a + b;
}
cobalah membuat versi Anda sendiri.
Misalnya:
double hitungLuas(double panjang, double lebar) {
return panjang * lebar;
}
Dengan cara tersebut, Anda benar-benar melatih kemampuan programming.
Takut dengan Error
Error adalah bagian normal dari proses belajar programming. Ketika muncul error, biasakan membaca:
- nama error,
- file,
- baris kode,
- pesan error,
- penyebab yang mungkin.
Kemampuan debugging akan menjadi semakin penting ketika aplikasi Flutter mulai kompleks.
Checklist Sebelum Lanjut ke Level 3
Sebelum melanjutkan ke tahap berikutnya, pastikan Anda sudah dapat menjawab pertanyaan berikut.
Basic Dart
- Apa fungsi
main()? - Apa perbedaan
var,final, danconst? - Apa perbedaan
String,int,double, danbool? - Bagaimana cara melakukan operasi matematika?
- Bagaimana cara membuat kondisi?
Logic
- Bagaimana menggunakan
if? - Apa fungsi
switch? - Bagaimana membuat
forloop? - Bagaimana menggunakan
while?
Function
- Apa itu function?
- Bagaimana membuat parameter?
- Bagaimana mengembalikan nilai menggunakan
return? - Apa itu arrow function?
Collection
- Apa itu List?
- Apa itu Map?
- Apa itu Set?
- Bagaimana melakukan iterasi terhadap List?
OOP
- Apa itu class?
- Apa itu object?
- Apa itu constructor?
- Apa itu method?
- Apa fungsi inheritance?
Modern Dart
- Apa itu null safety?
- Apa fungsi
?? - Apa fungsi
??? - Apa itu Future?
- Apa fungsi
asyncdanawait?
Jika sebagian besar pertanyaan tersebut sudah dapat Anda jawab dan praktikkan, Anda sudah cukup siap untuk melanjutkan perjalanan belajar Flutter.
Kesimpulan
Belajar Dart dari nol merupakan tahap penting sebelum masuk lebih jauh ke Flutter.
Sebagai lanjutan dari Level 0 tentang apa itu Flutter, Dart, cara kerja Flutter, widget, cross-platform development, ekosistem Flutter, dan alasan Flutter cocok dipelajari pemula.
Dart bukan tujuan akhir, tetapi fondasi bahasa pemrograman yang akan digunakan sepanjang perjalanan Anda sebagai Flutter developer.
Anda tidak harus menguasai seluruh fitur Dart sekaligus. Fokus terlebih dahulu pada konsep yang paling sering digunakan dalam pengembangan aplikasi, seperti variable, tipe data, operator, conditional, loop, function, collection, null safety, OOP, serta asynchronous programming.
Yang paling penting bukan seberapa banyak syntax yang berhasil dihafalkan, tetapi seberapa baik Anda memahami cara berpikir dan menyelesaikan masalah menggunakan kode.
Setelah memahami dasar Dart, Anda akan memiliki fondasi yang jauh lebih kuat untuk mempelajari Flutter.
Langkah berikutnya adalah Level 3 — Instalasi dan Setup Flutter, yaitu mulai menyiapkan environment development dan menjalankan project Flutter pertama Anda.
- bahasa Dart untuk pemula
- belajar Dart
- belajar Dart untuk Flutter
- belajar Flutter
- belajar Flutter dari nol
- belajar Flutter untuk pemula
- cara belajar Flutter
- Dart dan Flutter
- Dart Flutter
- Dart programming
- dasar bahasa Dart
- dasar coding Flutter
- ekosistem Flutter
- Flutter untuk pemula
- pemrograman Dart
- tutorial Dart
- tutorial Dart untuk pemula
- tutorial Flutter
Tinggalkan komentar