Ce face Object.toString
toString() transformă un obiect în text. Este apelat automat de print, de interpolare ('$obiect') și de StringBuffer.write. Pentru tipurile de bază rezultatul este cel așteptat: 42, [1, 2], {a: 1}.
Implementarea din Object returnează doar Instance of 'NumeClasa', ceea ce nu ajută. Suprascrie metoda în clasele tale cu @override ca să afișezi câmpurile importante. Așa depanarea devine mult mai ușoară.
toString() este gândit pentru oameni și pentru depanare. Pentru salvare sau trimitere a datelor (JSON, fișiere) scrie metode separate, de exemplu toJson().
Ce returnează
Un String.
Exemple
Exemplul 1: Cu și fără toString propriu
class Carte {
final String titlu;
final String autor;
Carte(this.titlu, this.autor);
}
class Produs {
final String nume;
final double pret;
Produs(this.nume, this.pret);
@override
String toString() => '$nume (${pret.toStringAsFixed(2)} lei)';
}
void main() {
print(Carte('Amintiri din copilărie', 'Ion Creangă'));
var p = Produs('Cafea', 18.5);
print(p);
print('În coș: $p');
print([Produs('Lapte', 7.9), Produs('Pâine', 4.5)]);
}
Rezultat
Instance of 'Carte'
Cafea (18.50 lei)
În coș: Cafea (18.50 lei)
[Lapte (7.90 lei), Pâine (4.50 lei)]
Exemplul 2: toString pentru tipurile de bază
void main() {
print(42.toString());
print(3.0.toString());
print(true.toString());
print([1, 'doi', null].toString());
print({'oraș': 'Iași', 'cod': 700506}.toString());
print(Duration(minutes: 90).toString());
print(null.toString());
}
Rezultat
42
3.0
true
[1, doi, null]
{oraș: Iași, cod: 700506}
1:30:00.000000
null
Greșeli frecvente
- Uiți
@overridesau greșești numele (toStrng). Fără eroare,printafișează în continuareInstance of .... - Folosești
toString()ca format de salvare și apoi îl „parsezi” înapoi. Formatul nu este garantat; folosește JSON.
Comenzi înrudite
print: Afișează o valoare pe ecran (ieșirea standard), urmată de un rând nou.Object: Clasa de bază a tuturor claselor Dart, cu excepția lui Null; runtimeType dă tipul real al unui obiect.StringBuffer: Construiește un text din multe bucăți, eficient; la final toString() dă textul, iar clear() îl golește.