gpt4 book ai didi

image - Flutter:来自网络的 ImageCache 使应用程序崩溃 - 警告数据库已锁定 0:00:10.000000。确保您始终使用

转载 作者:行者123 更新时间:2023-12-04 10:37:06 27 4
gpt4 key购买 nike

我有一个带有卡片的 ListView ,其中包含我从 CDN 加载的图像。
当滚动位于页面的 50%(分页)时,我会收到 20 个新产品。
但是,一段时间后它总是崩溃。
会不会是因为大图?一些图像尚未上传并返回 404。
图片有时也会闪烁并重新加载。
使用以下包,flutter 推荐:https://github.com/renefloor/flutter_cached_network_image
代码:

Container(
padding: EdgeInsets.only(
top: MediaQuery.of(context).size.height * 0.02),
width: MediaQuery.of(context).size.width * 0.3,
child: CachedNetworkImage(
placeholder: (context, url) => Container(
padding: EdgeInsets.only(
top: MediaQuery.of(context).size.height *
0.05),
child: placeholder,
),
imageUrl: widget.product.pictureUrl,
)
堆栈跟踪:
MultiFrameImageStreamCompleter._decodeNextFrameAndSchedule (image_stream.dart:680)
MultiFrameImageStreamCompleter._handleCodecReady (image_stream.dart:644)
FileImage._loadAsync (image_provider.dart)
FileImage.load (image_provider.dart:638)
ImageProvider.resolve.<fn>.<fn>.<fn> (image_provider.dart:327)
ImageCache.putIfAbsent (image_cache.dart:160)
ImageProvider.resolve.<fn>.<fn> (image_provider.dart:325)
SynchronousFuture.then (synchronous_future.dart:38)
ImageProvider.resolve.<fn> (image_provider.dart:323)
ImageProvider.resolve (image_provider.dart:315)
_ImageState._resolveImage (image.dart:1010)
_ImageState.didChangeDependencies (image.dart:967)
StatefulElement._firstBuild (framework.dart:4376)
ComponentElement.mount (framework.dart:4201)
Element.inflateWidget (framework.dart:3194)
Element.updateChild (framework.dart:2988)
SingleChildRenderObjectElement.mount (framework.dart:5445)
Element.inflateWidget (framework.dart:3194)
MultiChildRenderObjectElement.mount (framework.dart:5551)
Element.inflateWidget (framework.dart:3194)
编辑 1:
经过一些调查,我发现如果我在任何地方都使用相同的图片(可以是高分辨率的),它工作正常。那么要么是某些图片可能损坏,要么很难处理许多不同的图片?
编辑 2:
崩溃时发生的输出之一如下:

I/flutter ( 5858): Warning database has been locked for0:00:10.000000. Make sure you always use the transaction object fordatabase operations during a transaction


也感觉和404图像越来越相关。缓存被锁定了吗?

最佳答案

我将代码更改为以下内容:

FadeInImage(
placeholder: MemoryImage(kTransparentImage),
image: new CachedNetworkImageProvider(
widget.product.pictureUrl),
))

我还更改了显示所有图片的列表:
SliverGridDelegateWithFixedCrossAxisCount(
childAspectRatio: _aspectRatio, crossAxisCount: 2),
itemCount: widget.products.length,
addAutomaticKeepAlives: false,
itemBuilder: (context, index) {
return ProductCard(
showProductFunction: showProductFunction,
product: widget.products[index]);
},

可能产生一些影响的属性(property):

addAutomaticKeepAlives: false



但最重要的是浏览所有图像:
  • 所有图像都存在(无 404)
  • 所有图像最大为 500x500(之前一些为 4000x4000)
  • 所有图像现在都已压缩
  • 关于image - Flutter:来自网络的 ImageCache 使应用程序崩溃 - 警告数据库已锁定 0:00:10.000000。确保您始终使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60122111/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com