String & Interpolasi
Menyisipkan variabel ke string dengan $ dan ${}, plus method String penting.
Menyelipkan data ke dalam teks
Seringkali kamu ingin mencetak kalimat yang berisi nilai variabel: "Halo, Budi! Umurmu 17 tahun." Cara kuno adalah menggabung teks dengan +, tapi itu melelahkan. String interpolation adalah cara Dart menyelipkan nilai langsung ke dalam teks memakai tanda $.
Analogi: interpolation itu seperti surat formulir. Kamu menulis template "Halo, [NAMA]!" sekali, lalu [NAMA] diganti otomatis untuk tiap orang. Di Dart, $nama adalah "kolom formulir" itu.
Kenapa interpolation ada?
Tanpa interpolation, kode terlihat seperti ini:
void main() {
String nama = 'Budi';
int umur = 17;
// Cara kuno: gabung dengan +
print('Halo, ' + nama + '! Umurmu ' + umur.toString() + ' tahun.');
}Bisa jalan, tapi berisik: banyak tanda +, kutip, dan toString(). Bandingkan dengan interpolation:
void main() {
String nama = 'Budi';
int umur = 17;
// Cara Dart: selipkan langsung dengan $
print('Halo, $nama! Umurmu $umur tahun.');
}Satu baris, jelas, tanpa konversi manual. Inilah alasan interpolation menjadi cara standar di Dart.
Bentuk sederhana: $nama
Untuk variabel sederhana, cukup tulis $ diikuti nama variabel:
void main() {
String buah = 'mangga';
int jumlah = 5;
double harga = 2500.5;
print('Aku beli $jumlah buah $buah seharga $harga rupiah.');
// Aku beli 5 buah mangga seharga 2500.5 rupiah.
}Bentuk ekspresi: ${...}
Kalau yang disisipkan bukan sekadar nama variabel, melainkan ekspresi (perhitungan, pemanggilan method, akses properti), bungkus dengan ${}:
void main() {
int harga = 10000;
int jumlah = 3;
print('Total: ${harga * jumlah}'); // Total: 30000
print('Tahun depan: ${2026 + 1}'); // Tahun depan: 2027
String nama = 'budi santoso';
print('Nama besar: ${nama.toUpperCase()}'); // BUDI SANTOSO
print('Panjang nama: ${nama.length} huruf'); // 12 huruf
}Aturan praktisnya: kalau setelah $ hanya nama variabel sederhana, tulis langsung. Kalau ada titik, kurung, atau operator, pakai kurung kurawal ${}.
Multiline string
Untuk teks panjang beberapa baris, pakai tiga kutip:
void main() {
String nama = 'Ani';
String pesan = '''
Halo $nama,
Terima kasih sudah belajar Dart.
Tetap semangat ya!
''';
print(pesan);
}Interpolation tetap bekerja di dalam multiline string.
Kesalahan umum pemula
1. Lupa $ sehingga variabel tidak terganti
// SALAH
void main() {
String nama = 'Budi';
print('Halo, nama!'); // mencetak "Halo, nama!" mentah
}// BENAR
void main() {
String nama = 'Budi';
print('Halo, $nama!'); // Halo, Budi!
}2. Pakai $nama.method tanpa kurung kurawal
// SALAH: hanya $nama yang terganti, sisanya teks mentah
void main() {
String nama = 'budi';
print('$nama.toUpperCase()'); // budi.toUpperCase()
}// BENAR
void main() {
String nama = 'budi';
print('${nama.toUpperCase()}'); // BUDI
}3. Interpolation di string kutip tunggal vs ganda, tidak masalah
Keduanya mendukung interpolation. Pilih satu gaya dan konsisten. Yang penting JANGAN pakai string mentah (raw string, diawali r) kalau butuh interpolation:
void main() {
String nama = 'Budi';
print(r'Halo, $nama'); // r membuat $ tidak diproses!
print('Halo, $nama'); // Halo, Budi
}Kesimpulan
Interpolation ($variabel dan ${ekspresi}) adalah cara idiomatis Dart menggabungkan data ke dalam teks. Lebih ringkas dan lebih mudah dibaca daripada concatenasi +. Mulai sekarang, jadikan ini kebiasaan default setiap mencetak nilai variabel.
Catatan teknis: Interpolation dievaluasi saat runtime dengan memanggil
toString()pada objeknya. Kamu bisa mengubah cara objekmu ditampilkan dengan meng-override methodtoString(), topik yang akan dibahas di modul OOP.
Tantangan
Format nama rapi
Diberi nama acak-acakan " bUdI sAnToSo ", tampilkan "Halo, Budi Santoso!" (trim, lowercase, lalu kapitalkan tiap kata) memakai interpolasi.
void main() {
String nama = ' bUdI sAnToSo ';
// TODO
}