appendAll method
追加一个list, 并发射
Implementation
List<T>? appendAll(List<T> elements, {bool fromHead = false}) {
if (_subject.isClosed) {
L.w('IO在close状态下请求发送数据');
return null;
}
if (elements.isEmpty && latest != null) {
L.d('append空列表, 略过');
return latest;
}
// 如果没有设置原始数据, 那么就用空列表
latest ??= [];
if (fromHead) {
final List<T>? pending = latest?..insertAll(0, elements);
// 从前面添加, 就把后面的挤出去
if (_forceCapacity != null && pending!.length > _forceCapacity!) {
pending.removeRange(_forceCapacity! - 1, pending.length);
}
_subject.add(pending);
} else {
final List<T>? pending = latest?..addAll(elements);
// 从后面添加, 就把前面的挤出去
if (_forceCapacity != null && pending!.length > _forceCapacity!) {
pending.removeRange(0, _forceCapacity!);
}
_subject.add(pending);
}
return elements;
}