метод join
- [String separator = ""]
Объединяет строковое представление элементов в одну строку.
Каждый элемент преобразуется в строку с помощью метода Object.toString. Если предоставлен separator, он вставляется между строковыми представлениями элементов.
Возвращаемый future завершается объединённой строкой, когда этот поток завершён.
Если этот поток выдаёт ошибку или вызов Object.toString вызывает исключение, возвращаемый future завершается с этой ошибкой, и обработка прекращается.
Пример:
final result = await Stream.fromIterable(['Mars', 'Venus', 'Earth'])
.join('--');
print(result); // 'Mars--Venus--Earth' Реализация
Future<String> join([String separator = ""]) {
_Future<String> result = new _Future<String>();
StringBuffer buffer = new StringBuffer();
bool first = true;
StreamSubscription<T> subscription =
this.listen(null, onError: result._completeError, onDone: () {
result._complete(buffer.toString());
}, cancelOnError: true);
subscription.onData(separator.isEmpty
? (T element) {
try {
buffer.write(element);
} catch (e, s) {
_cancelAndErrorWithReplacement(subscription, result, e, s);
}
}
: (T element) {
if (!first) {
buffer.write(separator);
}
first = false;
try {
buffer.write(element);
} catch (e, s) {
_cancelAndErrorWithReplacement(subscription, result, e, s);
}
});
return result;
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-async/Stream/join.html