StringBuffer.write în Dart

Adaugă o valoare la sfârșitul bufferului (write) sau o valoare urmată de rând nou (writeln).

Sintaxă
void write(Object? object)
void writeln([Object? object = ''])

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'). write primește o singură valoare; pentru mai multe folosește writeAll sau mai multe apeluri.
  • Pui writeln și la ultimul rând, apoi te miri de rândul gol de la final. Folosește write pentru 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.