每次我设置状态时,Image.network 都会闪烁

问题描述 投票:0回答:2

ClipOval(child:Image.network("http://197.13.15.233:8787/api/v1/user/$id/picture", 适合:BoxFit.cover, 宽度:40, 身高:40, 键:ValueKey(new Random().nextInt(100)), 标题:{ "authorization": "不记名$token", // 如果需要其他标头 }, loadBuilder:(BuildContext 上下文、Widget 子项、ImageChunkEvent 加载进度) {

              if (loadingProgress == null) return child;
              return ClipOval(
                child: Container(
                  width: 40,
                  height: 40,
                  child: Center(
                    child: CircularProgressIndicator(
                      value: loadingProgress.expectedTotalBytes != null ?
                      loadingProgress.cumulativeBytesLoaded / loadingProgress.expectedTotalBytes
                          : null,
                    ),
                  ),
                ),
              );
            },
            errorBuilder: (BuildContext context, Object exception, StackTrace stackTrace) {
              return SvgPicture.asset(
                "Assets/Images/avatar.svg",
                width: 40,
                height: 40,
                fit: BoxFit.cover,

              );
            },
          ),
        )
flutter dart flutter-layout
2个回答
0
投票

每次调用

setState
时,相关的
StatefulWidget
都会重建。因此,再次从网络中获取网络图像。

为了避免这种情况,您可以使用CachedNetworkImage。它会缓存您的网络图像,不再闪烁。


0
投票

如果您遇到

CacheNetworkImage
闪烁问题。您可以通过增加缓存大小来尝试解决方法。

PaintingBinding.instance.imageCache.maximumSizeBytes = 1000 << 20;

https://github.com/Baseflow/flutter_cached_network_image/issues/325#issuecomment-869041042

© www.soinside.com 2019 - 2024. All rights reserved.