滚动滚动列表视图时,网络图像是否不断消失?

时间:2019-07-16 08:18:45

标签: flutter dart flutter-layout

我有一个列表视图,其中加载了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,),
                ),
            ],
          )
        ),

Composer API

3 个答案:

答案 0 :(得分:5)

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

ListView.builder(
    cacheExtent: 9999,
}

答案 1 :(得分:0)

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

如果要缓存图像,请考虑使用软件包Cached_network_image

答案 2 :(得分:0)

尝试为列表中的每一项提供ValueKey