description

# join method

Future<String> join([

1. 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 = _Future<String>();
      StringBuffer buffer = 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;
    }