append method

T? append(
  1. T element, {
  2. bool fromHead = false,
})

追加, 并发射

Implementation

T? append(T element, {bool fromHead = false}) {
  if (_subject.isClosed) {
    L.w('IO在close状态下请求发送数据');
    return null;
  }

  // 需要拷贝一份, 防止影响原始数据, 比如说改变了_seedValue的内容
  final copied = List.of(latest);

  if (fromHead) {
    final List<T> pending = copied..insert(0, element);
    // 从前面添加, 就把后面的挤出去
    if (_forceCapacity != null && pending.length > _forceCapacity!) {
      pending.removeLast();
    }
    _subject.add(pending);
  } else {
    final List<T> pending = copied..add(element);
    // 从后面添加, 就把前面的挤出去
    if (_forceCapacity != null && pending.length > _forceCapacity!) {
      pending.removeAt(0);
    }
    _subject.add(pending);
  }
  return element;
}