perf: sag tik efekt suruklemesinde kitlenme fix — image provider memoize (her frame'de yeniden decode onlendi)
This commit is contained in:
1 parent
c8ec0644d8
commit
35bbb0b885
2 files changed
+14
-4
No files matched your search
Vendored
BIN
Binary file not shown.
@@ -338,13 +338,23 @@ class _ImageCanvasState extends State<ImageCanvas> {
|
|||||||
return _cachedFilter!;
|
return _cachedFilter!;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FileImage? _cachedFileImage;
|
||||||
|
ImageProvider<Object>? _cachedProvider;
|
||||||
|
String? _cachedPath;
|
||||||
|
int? _cachedCacheWidth;
|
||||||
|
|
||||||
Widget _buildImage() {
|
Widget _buildImage() {
|
||||||
final longest = _vpSize.longestSide;
|
final longest = _vpSize.longestSide;
|
||||||
final cacheWidth = longest > 0 ? (longest * 2).round() : null;
|
final cacheWidth = longest > 0 ? (longest * 2).round() : null;
|
||||||
final ImageProvider<Object> provider = cacheWidth != null
|
if (_cachedPath != widget.filePath || _cachedCacheWidth != cacheWidth) {
|
||||||
? ResizeImage.resizeIfNeeded(
|
_cachedPath = widget.filePath;
|
||||||
cacheWidth, null, FileImage(File(widget.filePath)))
|
_cachedCacheWidth = cacheWidth;
|
||||||
: FileImage(File(widget.filePath));
|
_cachedFileImage = FileImage(File(widget.filePath));
|
||||||
|
_cachedProvider = cacheWidth != null
|
||||||
|
? ResizeImage.resizeIfNeeded(cacheWidth, null, _cachedFileImage!)
|
||||||
|
: null;
|
||||||
|
}
|
||||||
|
final ImageProvider<Object> provider = _cachedProvider ?? _cachedFileImage!;
|
||||||
return Image(
|
return Image(
|
||||||
key: _imageKey,
|
key: _imageKey,
|
||||||
image: provider,
|
image: provider,
|
||||||
|
|||||||
Reference in new issue
Block a user