staggered static method
List<Widget>
staggered({
- required List<
Widget> children, - required Map<
MontageAnimation, MotionWidgetBuilder> motion(), - MotionWidgetBuilder? fallback,
- double overlap = 0,
- double start = 0.0,
- double end = 1.0,
Implementation
static List<Widget> staggered({
required List<Widget> children,
required Map<MontageAnimation, MotionWidgetBuilder> motion(
Widget widget,
int i,
Curve forward,
Curve backward,
),
MotionWidgetBuilder? fallback,
double overlap = 0,
double start = 0.0,
double end = 1.0,
}) {
final result = <Widget>[];
final totalDuration =
children.length.toDouble() - (children.length - 1) * overlap;
for (var i = 0; i < children.length; i++) {
final child = children[i];
final childStart = (i - i * overlap) / totalDuration;
final childEnd = (i - (i * overlap) + 1) / totalDuration;
final interval = Interval(
start,
end,
curve: Interval(
childStart,
childEnd,
),
);
final childMotion = motion(
child,
i,
interval,
interval.flipped,
);
result.add(
Motion(
fallback: fallback ?? defaultMotionFallbackBuilder,
motion: childMotion,
child: child,
),
);
}
return result;
}