Dart DocumentationbotEventHandle<T>

EventHandle<T> class

class EventHandle<T> extends DisposableImpl implements EventRoot<T> {
  HashMap<GlobalId, Action1<T>> _handlers;

  void fireEvent(T args){
    assert(!isDisposed);
    if(_handlers != null){
      _handlers.forEach((GlobalId id, Action1<T> handler){
        handler(args);
      });
    }
  }

  /**
   * _I'm not a huge fan of returning a [GlobalId] but at the moment
   * functions don't have a simple model for identity. [GlobalId] allows
   * reliable removal of an added handler._
   *
   * Related dart bug [167](http://code.google.com/p/dart/issues/detail?id=167)
   */
  GlobalId add(Action1<T> handler){
    assert(!isDisposed);
    var id = new GlobalId();
    if(_handlers == null){
      _handlers = new HashMap<GlobalId, Action1<T>>();
    }
    _handlers[id] = handler;
    return id;
  }

  bool remove(GlobalId id){
    if(_handlers != null){
      return _handlers.remove(id) != null;
    }
    else{
      return false;
    }
  }

  void disposeInternal(){
    super.disposeInternal();
    if(_handlers != null){
      _handlers.clear();
      _handlers = null;
    }
  }
}

Extends

DisposableImpl > EventHandle<T>

Implements

EventRoot<T>

Properties

final bool isDisposed #

inherited from DisposableImpl
bool get isDisposed => _disposed;

final Type runtimeType #

inherited from Object

A representation of the runtime type of the object.

external Type get runtimeType;

Operators

bool operator ==(other) #

inherited from Object

The equality operator.

The default behavior for all Objects is to return true if and only if this and other are the same object.

If a subclass overrides the equality operator it should override the hashCode method as well to maintain consistency.

bool operator ==(other) => identical(this, other);

Methods

GlobalId add(Action1 handler) #

I'm not a huge fan of returning a GlobalId but at the moment functions don't have a simple model for identity. GlobalId allows reliable removal of an added handler.

Related dart bug 167

GlobalId add(Action1<T> handler){
  assert(!isDisposed);
  var id = new GlobalId();
  if(_handlers == null){
    _handlers = new HashMap<GlobalId, Action1<T>>();
  }
  _handlers[id] = handler;
  return id;
}

void dispose() #

inherited from DisposableImpl
void dispose(){
  if (!_disposed) {
    // Set disposed_ to true first, in case during the chain of disposal this
    // gets disposed recursively.
    this._disposed = true;
    this.disposeInternal();
  }
}

void disposeInternal() #

Do not call this method directly. Call dispose instead. Subclasses should override this method to implement Disposable behavior.

docs inherited from DisposableImpl
void disposeInternal(){
  super.disposeInternal();
  if(_handlers != null){
    _handlers.clear();
    _handlers = null;
  }
}

void fireEvent(T args) #

void fireEvent(T args){
  assert(!isDisposed);
  if(_handlers != null){
    _handlers.forEach((GlobalId id, Action1<T> handler){
      handler(args);
    });
  }
}

int hashCode() #

inherited from Object

Get a hash code for this object.

All objects have hash codes. Hash codes are guaranteed to be the same for objects that are equal when compared using the equality operator ==. Other than that there are no guarantees about the hash codes. They will not be consistent between runs and there are no distribution guarantees.

If a subclass overrides hashCode it should override the equality operator as well to maintain consistency.

external int hashCode();

noSuchMethod(String name, List args) #

inherited from Object

noSuchMethod is invoked when users invoke a non-existant method on an object. The name of the method and the arguments of the invocation are passed to noSuchMethod. If noSuchMethod returns a value, that value becomes the result of the original invocation.

The default behavior of noSuchMethod is to throw a noSuchMethodError.

external Dynamic noSuchMethod(String name, List args);

const Object() #

inherited from Object

Creates a new Object instance.

Object instances have no meaningful state, and are only useful through their identity. An Object instance is equal to itself only.

const Object();

bool remove(GlobalId id) #

bool remove(GlobalId id){
  if(_handlers != null){
    return _handlers.remove(id) != null;
  }
  else{
    return false;
  }
}

String toString() #

inherited from Object

Returns a string representation of this object.

external String toString();

void validateNotDisposed() #

inherited from DisposableImpl
void validateNotDisposed() {
  assert(!_disposed);
}