Property<T> class
class Property<T> extends Attachable { static const Object Undefined = const _UndefinedValue(); final T defaultValue; Property(String name, [T this.defaultValue = null]) : super(name); T get(AttachableObject obj, [Func1<AttachableObject, T> ifAbsent = null]){ var coreValue = getCore(obj, ifAbsent); if(!identical(coreValue, Undefined)){ return coreValue; } else{ return defaultValue; } } Object getCore(AttachableObject obj, [Func1<AttachableObject, T> ifAbsent = null]){ return obj._getValueOrUndefined(this, obj, ifAbsent); } void set(AttachableObject obj, T value){ assert(!identical(value, Undefined)); obj._set(this, value); } void clear(AttachableObject obj) => obj._remove(this); bool isSet(AttachableObject obj) => obj._isSet(this); GlobalId addHandler(AttachableObject obj, Action1<Property> handler){ return obj._addHandler(this, handler); } bool removeHandler(AttachableObject obj, GlobalId handlerId){ return obj._removeHandler(this, handlerId); } String toString() => "Property '$name'"; }
Extends
Attachable > Property<T>
Constructors
Static Properties
const Object Undefined #
static const Object Undefined = const _UndefinedValue();
Properties
final Type runtimeType #
A representation of the runtime type of the object.
external Type get runtimeType;
Operators
bool operator ==(other) #
The equality operator.
The default behavior for all Object
s 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 addHandler(AttachableObject obj, Action1 handler) #
GlobalId addHandler(AttachableObject obj, Action1<Property> handler){ return obj._addHandler(this, handler); }
void clear(AttachableObject obj) #
void clear(AttachableObject obj) => obj._remove(this);
T get(AttachableObject obj, [Func1 ifAbsent = null]) #
T get(AttachableObject obj, [Func1<AttachableObject, T> ifAbsent = null]){ var coreValue = getCore(obj, ifAbsent); if(!identical(coreValue, Undefined)){ return coreValue; } else{ return defaultValue; } }
Object getCore(AttachableObject obj, [Func1 ifAbsent = null]) #
Object getCore(AttachableObject obj, [Func1<AttachableObject, T> ifAbsent = null]){ return obj._getValueOrUndefined(this, obj, ifAbsent); }
abstract int hashCode() #
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.
bool isSet(AttachableObject obj) #
bool isSet(AttachableObject obj) => obj._isSet(this);
noSuchMethod(String name, List args) #
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() #
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();
new Property(String name, [T defaultValue = null]) #
Property(String name, [T this.defaultValue = null]) : super(name);
bool removeHandler(AttachableObject obj, GlobalId handlerId) #
bool removeHandler(AttachableObject obj, GlobalId handlerId){ return obj._removeHandler(this, handlerId); }
void set(AttachableObject obj, T value) #
void set(AttachableObject obj, T value){ assert(!identical(value, Undefined)); obj._set(this, value); }
String toString() #
Returns a string representation of this object.
String toString() => "Property '$name'";