remove method
移除指定的接收者 receiver
。
如果指定了 key
、context
将有助于更快的移除指定接收者。
receiver
- 接收者
key
- 消息类型
context
- 环境。
Remove the specified receiver receiver
.
If key
and context
are specified, it will help to remove the specified recipient faster.
receiver
- receiver
key
-message type
context
- context.
Implementation
void remove(ResultCallback receiver, {String? key, Object? context}) {
if (_map == null) return;
if (receiver == null) return;
if (!_textIsEmpty(key)) {
_get(key!).removeListener(receiver);
} else {
_map.forEach((k, value) {
value.removeListener(receiver);
});
}
_cleanMap();
if (context != null) {
_getReceivers(context).remove(receiver);
if (_getReceivers(context).isEmpty) {
_receiverCache.remove(context);
}
} else {
List<Object?> needRemove = [];
_receiverCache.forEach((k, value) {
value.remove(receiver);
if (value.isEmpty) needRemove.add(k);
});
needRemove.forEach((k) {
_receiverCache.remove(k);
});
}
}