EffectController class abstract
Base "controller" class to facilitate animation of effects.
The purpose of an effect controller is to define how an Effect or an animation should progress over time. To facilitate that, this class provides variable progress, which will grow from 0.0 to 1.0. The value of 0 corresponds to the beginning of an animation, and the value of 1.0 is the end of the animation.
The progress variable can best be thought of as a "logical time". For
example, if you want to animate a certain property from value A to value B,
then you can use progress to linearly interpolate between these two
extremes and obtain variable x = A*(1 - progress) + B*progress
.
The exact behavior of progress is determined by subclasses, but the following general considerations apply:
- the progress can also go in negative direction (i.e. from 1 to 0);
- the progress may oscillate, going from 0 to 1, then back to 0, etc;
- the progress may change over a finite or infinite period of time;
- the value of 0 corresponds to the logical start of an animation;
- the value of 1 is either the end or the "peak" of an animation;
- the progress may briefly attain values outside of
[0; 1]
range (for example if a "bouncy" easing curve is applied).
An EffectController can be made to run forward in time (advance()
), or
backward in time (recede()
).
Unlike the dart.ui.AnimationController
, this class does not use a Ticker
to keep track of time. Instead, it must be pushed through time manually, by
calling the update()
method within the game loop.
Constructors
- EffectController({double? duration, double? speed, Curve curve = Curves.linear, double? reverseDuration, double? reverseSpeed, Curve? reverseCurve, bool infinite = false, bool alternate = false, int? repeatCount, double startDelay = 0.0, double atMaxDuration = 0.0, double atMinDuration = 0.0, VoidCallback? onMax, VoidCallback? onMin})
-
Factory function for producing common EffectControllers.
factory
- EffectController.empty()
Properties
- completed → bool
-
Has the effect already finished?
no setter
- duration → double?
-
Total duration of the effect. If the duration cannot be determined, this
will return
null
. For an infinite effect the duration is infinity.no setter - hashCode → int
-
The hash code for this object.
no setterinherited
- isInfinite → bool
-
Will the effect continue to run forever (never completes)?
no setter
- isRandom → bool
-
Is the effect's duration random or fixed?
no setter
- progress → double
-
The current progress of the effect, a value between 0 and 1.
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- started → bool
-
Has the effect started running? Some effects use a "delay" parameter to
postpone the start of an animation. This property then tells you whether
this delay period has already passed.
no setter
Methods
-
advance(
double dt) → double -
Advances this controller's internal clock by
dt
seconds. -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
onMount(
Effect parent) → void - This is called by the Effect class when the controller is attached to that effect. Controllers with children should propagate this to their children.
-
recede(
double dt) → double -
Similar to
advance()
, but makes the effect controller move back in time. -
setToEnd(
) → void - Puts the controller into its final "completed" state.
-
setToStart(
) → void - Reverts the controller to its initial state, as it was before the start of the animation.
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited