twonly-app-dependencies/lottie/test/utils.dart
2025-12-07 16:10:41 +01:00

57 lines
1.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';
class FilmStrip extends StatelessWidget {
final LottieComposition composition;
final LottieDelegates? delegates;
final Size size;
const FilmStrip(
this.composition, {
super.key,
required this.size,
this.delegates,
});
@override
Widget build(BuildContext context) {
return CustomPaint(size: size, painter: _CustomerPainter(this));
}
}
class _CustomerPainter extends CustomPainter {
static const _columns = 5;
final FilmStrip parent;
_CustomerPainter(this.parent);
@override
void paint(Canvas canvas, Size size) {
var thumbSize = Size(size.width / _columns, size.width / _columns);
var drawable = LottieDrawable(parent.composition, frameRate: FrameRate.max);
if (parent.delegates != null) {
drawable.delegates = parent.delegates;
}
var index = 0;
for (var progress = 0.0; progress <= 1; progress += 0.05) {
var x = index % _columns;
var y = index ~/ _columns;
var rect =
Offset(x * thumbSize.width, y.toDouble() * thumbSize.height) &
thumbSize;
drawable
..setProgress(progress)
..draw(canvas, rect);
++index;
}
}
@override
bool shouldRepaint(CustomPainter oldDelegate) {
return true;
}
}