append method
追加, 并发射
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;
}