inheritable library

Classes

Aspect<A, T>
AspectBatch
Allow mutating multiple Inheritables at the same time while deferring their updates to dependents.
AspectBuilder<A, T>
Convenience widget to get aspect as part of the build method
AspectMutation<T>
AspectOverride<A, T>
EquatableAspect<T>
Provides default implementations for Object.== && Object.hashCode.
Inheritable<T>
Similar to InheritedModel provides a way to listen to certain aspects of T.
InheritableAspect<T>
An aspect of T
NoAspect<T>
Convenience InheritableAspect implementation to achieve similar effect as that of InheritedWidget

Mixins

ClonableAspect<T>
Support partially replacing certain fields of this
DefaultAspectofContext<A, T>
An InheritableAspect that allows providing a defaultValue in it's of method
DelegatingAspect<T>
Delegates all methods of InheritableAspect to delegate.
DelegatingDependableAspect<T>
Delegates didUpdateWidget to delegate only when predicate is satisfied.
DependableAspect<T>
Allow using this as a dependency, which means, dependent widgets will be have option to rebuild whenever this aspect changes.
MutableInheritable<T>
Mutable version on Inheritable, allows dependents to make changes to the value held by this
MutableInheritableAspect<T>
An Aspect that allows updating it's value. The resultant type is plain base type InheritableAspect. This is due to the fact that once an aspect is converted in to this type, it can no longer be used for it's original purpose or can it be?
PatchableAspect<A, T>
PostDelegatingAspect<T>
PreDelegatingAspect<T>
ShouldNotifyAspect<A, T>
Provides a default implementation of DependableAspect.didUpdateWidget
TransformingAspect<A, T>
Adds static return type A to the of method.

Typedefs

AspectPatch<A, T> = T Function(T value, A next)
AspectWidgetBuilder<T> = Widget Function(BuildContext context, T aspect, Widget? child)
DefaultInheritableAspectOfContext<A> = A Function(BuildContext context)
DidUpdateWidget<T> = bool Function({required InheritableAspect<T> aspect, required Inheritable<T> next, required Inheritable<T> prev})
ExtractAspect<A, T> = A Function(T it)
Given T extract certain aspect A from it and return that.
InheritableAspectSatisfied<T> = bool Function(Inheritable<T> inheritable)
InheritableMutation<T> = T Function(Inheritable<T> inheritable)
Given inheritable return the next Inheritable.valueFor of T
PredicateAspect<T> = bool Function({required T next, required T prev})
Given T return whether you should be notified or not.