ShaderEffect class

Effect that applies an animated fragment shader to a target. See Writing and using fragment shaders for information on how to include shaders in your app.

shader is the FragmentShader to apply to the target. If null no effect will be applied.

overflow defines a buffer space around the target to draw the shader. This is useful for effects that draw outside of the target bounds, such as blurs. Defaults to EdgeInsets.zero.

layer allows you to layer the shader above, below, or completely replace the target visually. Defaults to ShaderLayer.replace.

update is an optional callback that allows you to update the shader. It is called whenever the animation value changes. It accepts a ShaderUpdateDetails object. It can update uniforms directly via setFloat or setImageSampler, by using ShaderUpdateDetails.updateUniforms.

If update is not specified, the shader will be updated automatically based on the "standardized" uniforms defined in ShaderUpdateDetails.updateUniforms.

The update callback may return an EdgeInsets to define the overflow, or null to use the overflow value.

Inheritance
Annotations

Constructors

ShaderEffect({Duration? delay, Duration? duration, Curve? curve, FragmentShader? shader, EdgeInsets? overflow, ShaderLayer? layer, ShaderUpdateCallback? update})
const

Properties

begin double?
The begin value for the effect. If null, effects should use a reasonable default value when appropriate.
finalinherited
curve Curve?
The specified easing curve for the effect. If null, will inherit the curve from the previous effect, or use Animate.defaultCurve if this is the first effect.
finalinherited
delay Duration?
The specified delay for the effect. If null, will inherit the delay from the previous effect, or use Duration.zero if this is the first effect.
finalinherited
duration Duration?
The specified duration for the effect. If null, will inherit the duration from the previous effect, or use Animate.defaultDuration if this is the first effect.
finalinherited
end double?
The end value for the effect. If null, effects should use a reasonable default value when appropriate.
finalinherited
hashCode int
The hash code for this object.
no setterinherited
layer ShaderLayer
final
overflow EdgeInsets?
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
shader FragmentShader?
final
update ShaderUpdateCallback?
final

Methods

build(BuildContext context, Widget child, AnimationController controller, EffectEntry entry) Widget
Builds the widgets that implement the effect on the target child, based on the provided AnimationController and EffectEntry.
override
buildAnimation(AnimationController controller, EffectEntry entry) Animation<double>
Returns an animation based on the controller, entry, and begin/end values.
inherited
getBeginRatio(AnimationController controller, EffectEntry entry) double
Returns a ratio corresponding to the beginning of the specified entry.
inherited
getEndRatio(AnimationController controller, EffectEntry entry) double
Returns a ratio corresponding to the end of the specified entry.
inherited
getOptimizedBuilder<U>({required ValueListenable<U> animation, Widget? child, required TransitionBuilder builder}) AnimatedBuilder
Returns an optimized AnimatedBuilder that doesn't rebuild if the value hasn't changed.
inherited
getToggleBuilder({required ValueListenable<double> animation, required Widget child, required bool toggle(), required ToggleEffectBuilder builder}) AnimatedBuilder
Returns an AnimatedBuilder that rebuilds when the boolean value returned by the toggle function changes.
inherited
isAnimationActive(Animation animation) bool
Check if the animation is currently running / active.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited