perf: sag tik efekt suruklemesinde kitlenme fix — image provider memoize (her frame'de yeniden decode onlendi)
This commit is contained in:
BIN
dist/imajviewer_1.0.0_amd64.deb
vendored
BIN
dist/imajviewer_1.0.0_amd64.deb
vendored
Binary file not shown.
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user