Ce face string interpolation
Într-un String (cu ghilimele simple sau duble), $nume este înlocuit cu valoarea variabilei, iar ${expresie} cu rezultatul oricărei expresii: calcule, apeluri de metode, operatorul ternar. Pentru valorile care nu sunt text se apelează automat toString().
Acoladele sunt obligatorii pentru orice e mai mult decât un nume simplu: '${elev.nume}', nu '$elev.nume', care ar afișa obiectul urmat de textul „.nume”.
Semnul $ ca atare se scrie \$. Un text brut (raw), cu r în față, nu face nici interpolare, nici secvențe \n. Ghilimelele triple (''' sau """) permit texte pe mai multe rânduri.
Exemple
Exemplul 1: Variabile și expresii
$nume pentru variabile simple, ${...} pentru expresii.
void main() {
final nume = 'Ioana';
final note = [9, 10, 8];
final media = note.reduce((a, b) => a + b) / note.length;
print('Eleva $nume are ${note.length} note: $note');
print('Media: ${media.toStringAsFixed(2)}, ${media >= 9 ? 'foarte bine' : 'bine'}');
print('Numele are ${nume.length} litere: ${nume.toUpperCase()}');
}
Rezultat
Eleva Ioana are 3 note: [9, 10, 8]
Media: 9.00, foarte bine
Numele are 5 litere: IOANA
Exemplul 2: Câmpuri de obiect și semnul $
Fără acolade, $p.nume ar afișa obiectul întreg. \$ scrie semnul dolar.
class Produs {
final String nume;
final double pret;
Produs(this.nume, this.pret);
@override
String toString() => 'Produs($nume)';
}
void main() {
final p = Produs('Căști', 149.99);
print('Greșit: $p.nume');
print('Corect: ${p.nume} costă ${p.pret} lei');
print('Preț în dolari: \$${(p.pret / 4.58).toStringAsFixed(2)}');
}
Rezultat
Greșit: Produs(Căști).nume
Corect: Căști costă 149.99 lei
Preț în dolari: $32.75
Exemplul 3: Texte brute și pe mai multe rânduri
r'...' lasă \n și $ neatinse; ghilimelele triple păstrează rândurile noi.
void main() {
const cale = r'C:\Users\ana\nou\$fisier.txt';
print(cale);
final client = 'Vasile Pop';
final suma = 245.5;
final mesaj = '''
Stimate $client,
Factura dumneavoastră este de $suma lei.
Mulțumim!''';
print(mesaj);
}
Rezultat
C:\Users\ana\nou\$fisier.txt
Stimate Vasile Pop,
Factura dumneavoastră este de 245.5 lei.
Mulțumim!
Greșeli frecvente
'$obiect.camp'în loc de'${obiect.camp}': se afișeazătoString()-ul obiectului urmat de „.camp”.- Concatenare cu
+șitoString()('Ai ' + varsta.toString() + ' ani'): interpolarea este mai scurtă și mai clară. - Prețuri scrise cu
$nescăpat ('Cost: $5'): eroare,$5nu este un nume valid. Scrie\$5sau folosește un text brut.
Comenzi înrudite
var: Declară o variabilă care se poate modifica; tipul este dedus automat din valoarea inițială.comentarii și documentare: Textul ignorat de compilator: // pe un rând, /* */ pe mai multe, și /// pentru documentația generată cu dart doc.collection if și for: if și for direct în interiorul unei liste, set sau map, pentru a construi colecția dintr-o singură expresie.