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(FResultCallback<FBModel> receiver, {String key = '', BuildContext? context}) {
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);
});
}
}