clear method

void clear(
  1. String key
)

移除广播系统中的指定 key 类型的所有接收者,以及该类型的粘性广播。 key - 类型

Remove all receivers of the specified key type in the broadcast system and sticky broadcasts of that type. key - type

Implementation

void clear(String key) {
  if (_map == null) return;
  _Notifier? remove = _map.remove(key);
  if (remove?.hasListeners ?? false) {
    remove?.listeners?.forEach((receiver) {
      _receiverCache.forEach((key, value) {
        value.remove(receiver);
      });
    });
    List<Object?> needRemove = [];
    _receiverCache.forEach((k, value) {
      if (value.isEmpty) needRemove.add(k);
    });
    needRemove.forEach((k) {
//        print('needRemove = $k');
      _receiverCache.remove(k);
    });
//      print('size = ${_receiverCache.length}');
  }
  remove?.dispose();
  _stickyMap.remove(key);
}