deregisterChangeListener method

  1. @override
Future<List<SearchCriteria>> deregisterChangeListener(
  1. StorageListener listener
)
override

Removes a registered listener.

@param listener the listener to be removed @return the removed search criteria @throws StorageException in case of any communication or storage problem

Implementation

@override
Future<List<SearchCriteria>> deregisterChangeListener(
    StorageListener listener) async {
  List<SearchCriteria> remove = <SearchCriteria>[];
  for (MapEntry<SearchCriteria, Set<StorageListener>> e
      in listeners.entries) {
    if (e.value.contains(listener)) {
      remove.add(e.key);
    }
  }
  if (remove.isEmpty) {
    throw StorageException('Listener not registered');
  }
  for (var c in remove) {
    listeners[c]!.remove(listener);
  }
  return remove;
}