perf: sag tik efekt suruklemesinde kitlenme fix — image provider memoize (her frame'de yeniden decode onlendi)

This commit is contained in:
Alhan
2026-08-03 11:38:27 +03:00
parent c8ec0644d8
commit 35bbb0b885
2 changed files with 14 additions and 4 deletions

Binary file not shown.

View File

@@ -338,13 +338,23 @@ class _ImageCanvasState extends State<ImageCanvas> {
return _cachedFilter!;
}
FileImage? _cachedFileImage;
ImageProvider<Object>? _cachedProvider;
String? _cachedPath;
int? _cachedCacheWidth;
Widget _buildImage() {
final longest = _vpSize.longestSide;
final cacheWidth = longest > 0 ? (longest * 2).round() : null;
final ImageProvider<Object> provider = cacheWidth != null
? ResizeImage.resizeIfNeeded(
cacheWidth, null, FileImage(File(widget.filePath)))
: FileImage(File(widget.filePath));
if (_cachedPath != widget.filePath || _cachedCacheWidth != cacheWidth) {
_cachedPath = widget.filePath;
_cachedCacheWidth = cacheWidth;
_cachedFileImage = FileImage(File(widget.filePath));
_cachedProvider = cacheWidth != null
? ResizeImage.resizeIfNeeded(cacheWidth, null, _cachedFileImage!)
: null;
}
final ImageProvider<Object> provider = _cachedProvider ?? _cachedFileImage!;
return Image(
key: _imageKey,
image: provider,