import 'package:flutter/material.dart'; import 'package:sxchnge_kyc/sxchnge_kyc.dart'; import '../generated/i18n/app_localizations.dart'; /// Evict this sensitive preview's decoded cache entry on replacement or exit. class PhotoPreview extends StatefulWidget { const PhotoPreview({super.key, required this.photo, required this.label}); final Photo photo; final String label; @override State createState() => _PhotoPreviewState(); } class _PhotoPreviewState extends State { late ImageProvider _image = _provider(); ImageProvider _provider() => ResizeImage.resizeIfNeeded(1000, null, MemoryImage(widget.photo.bytes)); @override void didUpdateWidget(covariant PhotoPreview oldWidget) { super.didUpdateWidget(oldWidget); if (!identical(oldWidget.photo, widget.photo)) { _image.evict(); _image = _provider(); } } @override void dispose() { _image.evict(); super.dispose(); } @override Widget build(BuildContext context) => Image( image: _image, height: 220, fit: BoxFit.contain, semanticLabel: widget.label, errorBuilder: (_, _, _) => Text(AppLocalizations.of(context)!.kycErrorUnreadable), ); }