join method
- String separator = ""
Combines the string representation of elements into a single string.
Each element is converted to a string using its Object.toString method.
If separator
is provided, it is inserted between element string
representations.
The returned future is completed with the combined string when this stream is done.
If this stream emits an error, or the call to Object.toString throws, the returned future is completed with that error, and processing stops.
Example:
final result = await Stream.fromIterable(['Mars', 'Venus', 'Earth'])
.join('--');
print(result); // 'Mars--Venus--Earth'
Implementation
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;
}