Ce face Stream.join
join transformă fiecare valoare în text cu toString() și le lipește, în ordinea sosirii, punând separatorul între ele. Future-ul se termină la închiderea stream-ului.
Fără separator, valorile sunt lipite direct una de alta.
Parametri
| Parametru | Descriere |
|---|---|
separator |
Opțional: textul pus între valori (implicit gol). |
Ce returnează
Un Future<String>.
Exemple
Exemplul 1: Lista participanților
Future<void> main() async {
final inscrisi = Stream.fromIterable(['Ana', 'Mihai', 'Ioana']);
print('Participanți: ${await inscrisi.join(', ')}');
}
Rezultat
Participanți: Ana, Mihai, Ioana
Exemplul 2: Text primit pe bucăți
Stream<String> bucati() async* {
for (final b in ['Dart ', 'este ', 'un ', 'limbaj ', 'prietenos.']) {
await Future.delayed(const Duration(milliseconds: 5));
yield b;
}
}
Future<void> main() async {
print(await bucati().join());
print(await Stream.fromIterable([1, 2, 3]).join(' + '));
}
Rezultat
Dart este un limbaj prietenos.
1 + 2 + 3
Greșeli frecvente
- Folosești
joinpe un stream infinit. Future-ul nu se termină niciodată.
Comenzi înrudite
Stream.fold: Combină toate valorile stream-ului într-un singur rezultat (sumă, maxim, text); fold pornește de la o valoare dată.Iterable.join: Lipește elementele într-un singur text, cu un separator între ele.Stream.toList: Adună toate valorile stream-ului într-o listă (sau într-un set) când stream-ul se închide.