fix(player): 预热直出并与视频统一封面布局

This commit is contained in:
Zhou Weidong committed 2026-10-26 14:12:42 +08:00
1 parent a3a79f7068
commit 48b4e67d34
9 files changed
+119 -104

No files matched your search

@@ -256,26 +256,37 @@ class SpriteCropPreview extends StatelessWidget {
super.key,
required this.image,
required this.sourceRect,
this.fit = BoxFit.cover,
});
final ui.Image image;
final ui.Rect sourceRect;
final BoxFit fit;
@override
Widget build(BuildContext context) => CustomPaint(
painter: _SpriteCropPainter(image: image, sourceRect: sourceRect),
painter: _SpriteCropPainter(
image: image,
sourceRect: sourceRect,
fit: fit,
),
);
}
class _SpriteCropPainter extends CustomPainter {
const _SpriteCropPainter({required this.image, required this.sourceRect});
const _SpriteCropPainter({
required this.image,
required this.sourceRect,
required this.fit,
});
final ui.Image image;
final ui.Rect sourceRect;
final BoxFit fit;
@override
void paint(Canvas canvas, Size size) {
final fitted = applyBoxFit(BoxFit.cover, sourceRect.size, size);
final fitted = applyBoxFit(fit, sourceRect.size, size);
final sourceOffset = Alignment.center.inscribe(
fitted.source,
Offset.zero & sourceRect.size,
@@ -302,7 +313,9 @@ class _SpriteCropPainter extends CustomPainter {
@override
bool shouldRepaint(covariant _SpriteCropPainter oldDelegate) =>
oldDelegate.image != image || oldDelegate.sourceRect != sourceRect;
oldDelegate.image != image ||
oldDelegate.sourceRect != sourceRect ||
oldDelegate.fit != fit;
}
String _format(Duration value) {