Ce face StringBuffer.write
write(x) transformă x în text cu toString() și îl adaugă la final, fără nimic în plus. writeln(x) face același lucru și adaugă un rând nou (\n). writeln() fără argument adaugă doar un rând nou.
Poți scrie orice valoare: numere, liste, null (devine textul null) sau obiecte proprii cu toString(). Ambele metode returnează void, dar se pot înlănțui cu operatorul cascadă: sb..write('a')..write('b').
Aceleași metode există și pe stdout (dart:io) și pe fișierele deschise pentru scriere, pentru că toate implementează interfața StringSink.
Parametri
| Parametru | Descriere |
|---|---|
object |
Valoarea de adăugat. |
Ce returnează
Nimic (void).
Exemple
Exemplul 1: write față de writeln
void main() {
var sb = StringBuffer();
sb.write('Ana');
sb.write(' are ');
sb.write(3);
sb.writeln(' mere');
sb.writeln();
sb.writeln([9, 10, 8]);
sb.write(null);
print(sb);
}
Rezultat
Ana are 3 mere
[9, 10, 8]
null
Exemplul 2: Un tabel HTML generat cu cascadă
void main() {
var elevi = {'Ana': 9.5, 'Mihai': 8.25, 'Ioana': 10.0};
var html = StringBuffer()..writeln('<table>');
elevi.forEach((nume, media) {
html
..write(' <tr><td>')
..write(nume)
..write('</td><td>')
..write(media.toStringAsFixed(2))
..writeln('</td></tr>');
});
html.write('</table>');
print(html);
}
Rezultat
<table>
<tr><td>Ana</td><td>9.50</td></tr>
<tr><td>Mihai</td><td>8.25</td></tr>
<tr><td>Ioana</td><td>10.00</td></tr>
</table>
Greșeli frecvente
- Scrii
sb.write('a', 'b').writeprimește o singură valoare; pentru mai multe foloseștewriteAllsau mai multe apeluri. - Pui
writelnși la ultimul rând, apoi te miri de rândul gol de la final. Foloseștewritepentru ultima bucată.
Comenzi înrudite
StringBuffer: Construiește un text din multe bucăți, eficient; la final toString() dă textul, iar clear() îl golește.StringBuffer.writeAll: writeAll adaugă toate elementele unei colecții, cu un separator opțional; writeCharCode adaugă un caracter după cod.cascade (..): Operatorul .. face mai multe operații pe același obiect, una după alta, fără să repeți numele lui.