build method

  1. @override
Widget build({
  1. required Animation<double> animation,
  2. required Widget child,
  3. Map<String, Object?> params = const {},
})
override

Builds the animated widget for the forward direction.

animation0.0 → 1.0 where 0.0 = invisible/start, 1.0 = visible/end. child — the widget being animated. params — optional configuration map (typed by each plugin).

Concrete subclasses must override this method.

Implementation

@override
Widget build({
  required Animation<double> animation,
  required Widget child,
  Map<String, Object?> params = const {},
}) {
  final stiffness = (params['stiffness'] as double?) ?? 180.0;
  final damping = (params['damping'] as double?) ?? 12.0;
  final fromScale = (params['fromScale'] as double?) ?? 0.6;
  final fromOpacity = (params['fromOpacity'] as double?) ?? 0.0;

  final springCurve = SpringCurve(stiffness: stiffness, damping: damping);
  final curved = CurvedAnimation(parent: animation, curve: springCurve);

  final scaleTween = Tween<double>(begin: fromScale, end: 1.0);
  final opacityTween = Tween<double>(begin: fromOpacity, end: 1.0);

  return AnimatedBuilder(
    animation: curved,
    builder: (_, c) => Opacity(
      opacity: opacityTween.evaluate(curved).clamp(0.0, 1.0),
      child: Transform.scale(
        scale: scaleTween.evaluate(curved).clamp(0.0, 2.0),
        child: c,
      ),
    ),
    child: child,
  );
}