build method

  1. @override
Widget build(
  1. BuildContext context,
  2. Widget child,
  3. AnimationController controller,
  4. EffectEntry entry,
)
override

Builds the widgets that implement the effect on the target child, based on the provided AnimationController and EffectEntry.

Implementation

@override
Widget build(
  BuildContext context,
  Widget child,
  AnimationController controller,
  EffectEntry entry,
) {
  if (padding != 0) {
    child = Padding(
      padding: EdgeInsets.all(padding ?? defaultPadding),
      child: child,
    );
  }
  Animation<double> animation = buildAnimation(controller, entry);
  return getOptimizedBuilder<double>(
    animation: animation,
    builder: (_, __) {
      LinearGradient gradient = _buildGradient(animation.value);
      return ShaderMask(
        blendMode: blendMode ?? defaultBlendMode,
        shaderCallback: (bounds) => gradient.createShader(bounds),
        child: child,
      );
    },
  );
}