当前位置:   article > 正文

Flutter优化加载网络图片及异常捕获_flutter 网络图片加载优化

flutter 网络图片加载优化

一、前言

加载网络图片时,有时候因为一些原因导致加载缓慢。所以可以选择如下方式添加占位图。

二、使用

1. 图片占位符

(1) FadeInImage
FadeInImage(
  width: 100,
  fit: BoxFit.cover,
  placeholder: NetworkImage("占位图网址"),
  image: NetworkImage("实际渲染图片网址")
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
(2) 带圆角的FadeInImage
ClipRRect(
  borderRadius: BorderRadius.circular(200.dp),
  child: FadeInImage(
    placeholder: NetworkImage("占位图网址"),
    image: NetworkImage("实际渲染图片网址")
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2. Widget占位符

(1) Image.frameBuilder属性

四个参数如下:

  • context:构建上下文
  • child:widget子元素
  • frame:如果图片还在加载中的话为null
  • wasSynchronousLoaded:布尔值,图片加载完成后为true
Image.network(
  "实际渲染图片网址",
  errorBuilder: (context, error, stackTrace) {
    return CircularProgressIndicator();
  },
  frameBuilder: (context, child, frame, wasSynchronousLoaded){
    if(wasSynchronousLoaded){
      return child;
    }
    return AnimatedOpacity( /// 淡出效果
      child: child,
      opacity: frame == null ? 0 : 1,
      duration: const Duration(seconds: 2),
      curve: Curves.easeOut,
    );
  }
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
(2) Image.loadingBuilder属性

四个参数如下:

  • context:构建上下文
  • child:widget子元素
  • loadingProgress:加载进度,里面包含加载信息
    • loadingProgress.cumulativeBytesLoaded:已经传输的字节
    • loadingProgress.expectedTotalBytes:总字节
Image.network(
  "实际渲染图片网址",
  errorBuilder: (context, error, stackTrace) {
    return CircularProgressIndicator();
  },
  loadingBuilder: (context, child, loadingProgress){
    if(loadingProgress == null){
      return child;
    }
    return Container(
      alignment: Alignment.center,
      child: CircularProgressIndicator(
        value: loadingProgress.expectedTotalBytes != null
        ? loadingProgress.cumulativeBytesLoaded /
        loadingProgress.expectedTotalBytes!
        : null,
      ),
    );
  }
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

进度条

CircularProgressIndicator如下参数:

  • value:进度值, 进度值在0到1.0之间。 如果为空显示动画,非空显示进度
  • backgroundColor:背景颜色
  • valueColor:进度值颜色
  • strokeWidth:进度值宽度,默认4.0
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/678367
推荐阅读
相关标签
  

闽ICP备14008679号