【问题标题】:Network images keeps disappearing when scrolling list view in flutter?在颤动中滚动列表视图时网络图像不断消失?
【发布时间】:2019-07-16 08:18:45
【问题描述】:

我有一个列表视图,其中加载了来自 api 的图像,我注意到图像在偶尔滚动时会消失几秒钟。这里只是图片部分的代码:

Container(
padding: EdgeInsets.only(top:5.0,left:15.0,right:1.0,bottom:0.0),
constraints: new BoxConstraints.expand(
   height: 130.0,
   width: 150.0,
),
decoration: new BoxDecoration(
            image: new DecorationImage(
            image: NetworkImage(artworksAndEventsFinal[index]['thumbnail']),fit: BoxFit.cover,),
            ),
           child: new Stack(
              children: <Widget>[
                   new Positioned(
                   right: 0.0,
                   bottom: 0.0,
                   child: Container(
                   height: 24.0,
                   padding: EdgeInsets.only(top:5.0,left:10.0,right:5.0,bottom:5.0),
             decoration: new BoxDecoration(
             color: Theme.of(context).primaryColor,
             ),
             child: new Text(artworksAndEventsFinal[index]['year'],
                    style: new TextStyle(
                    fontWeight: FontWeight.bold,
                    fontSize: 11.0,
                    color: Colors.white
                     )
                    ),
             )
            ),
            new Positioned(
                right: 3.0,
                top: 0.0,
                child: new Icon(Icons.favorite_border,color: 
                Colors.white,),
                ),
            ],
          )
        ),

【问题讨论】:

  • 显示代码如何构建列表,因为我尝试使用 ListView.builder 并且它工作正常
  • 我在处理文件图像时遇到了同样的问题。您找到解决此问题的方法了吗?

标签: flutter dart flutter-layout


【解决方案1】:

将 cacheExtent 值更改为 9999,它对我有用

ListView.builder(
    cacheExtent: 9999,
}

【讨论】:

  • 谢谢伙计。经过无数小时的尝试。这终于为我解决了。
  • 添加一些解释为什么要使用它以及如果使用 cacheExtent 会发生什么。使用大量数字可能会禁用 ListView.builder 的主要功能,即仅在可见时构建和显示项目,从而节省内存。明智地使用。
【解决方案2】:

列表视图在可见时创建小部件。因此,只有可见的孩子拥有图像,消失的孩子会删除小部件,而尚未加载的孩子不会获取图像。 这种方法具有优化内存利用率的奇妙好处。假设您在列表视图中有 1000 张带有图像的卡片,此时屏幕上仅显示 2-3,因此只有 2-3 可见卡片图像将被加载,并且当用户滚动并从列表中取出其他卡片时,它只会在可见时加载图像。

如果你想缓存图片,请考虑使用包Cached_network_image

【讨论】:

  • 不是 OP,但我正在使用 cached_network_image 并且仍然存在当我滚动回顶部时缓存图像加载速度很慢的问题,导致一秒钟的空视图。我猜是因为大尺寸的图片。
  • 谢谢@Ashish Sukhija 我会试一试,Zerocchi 我在网上看到它只发生在调试应用程序上,而不是在你为生产构建它之后?您是否厌倦了在生产构建版本上进行测试?
  • @Mikethetechy 我在--profile--release 模式下尝试过,不幸的是它仍然发生。
  • 有人解决了吗?
【解决方案3】:

尝试为列表中的每个项目指定ValueKey

【讨论】:

  • 对我不起作用。物品仍在消失
猜你喜欢
  • 2020-02-04
  • 2020-06-19
  • 2019-04-08
  • 2016-09-21
  • 2021-10-02
  • 2019-01-16
  • 2013-04-26
  • 2020-08-26
  • 2015-12-03
相关资源
最近更新 更多