build method
Widget
build({
- required Animation<
double> animation, - required Widget child,
- Map<
String, Object?> params = const {},
override
Builds the animated widget for the forward direction.
animation — 0.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,
);
}