当前位置:   article > 正文

Flutter 圆形(头像)图片的 4种实现_flutter 圆形头像

flutter 圆形头像

测试图片:

  1. var imgUrl =
  2. "https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1604650283&di=54b94bcbc1e70d6cbd16c65bbd563144&src=http://pic.51yuansu.com/pic/cover/00/23/77/57e1d8b92edba_610.jpg";

一、CircleAvatar

从widget名称也可以看出来是实现圆形头像的组件。

  1. const CircleAvatar({
  2. Key key,
  3. this.child,
  4. this.backgroundColor,
  5. this.backgroundImage,
  6. this.onBackgroundImageError,
  7. this.foregroundColor,
  8. this.radius,
  9. this.minRadius,
  10. this.maxRadius,
  11. })
backgroundImage 为 ImageProvider,通过 AssetImage(本地图片)或 NetworkImage(网络图片)获取图片之后在背景显示,从而形成圆形头像

还有一个child,如果添加child 之后会覆盖显示到圆形图片之上。

  1. CircleAvatar(
  2. backgroundImage: AssetImage("images/default_img43.webp",),
  3. ),
  4. Padding(
  5. padding: EdgeInsets.only(left: 55),
  6. child: SizedBox(
  7. child: CircleAvatar(
  8. radius: 15,
  9. backgroundColor: Colors.red,
  10. backgroundImage: AssetImage("images/default_img43.webp"),
  11. child: Text("Test", style: styleBlack54Size16),
  12. ),
  13. width: 50,
  14. height: 50,
  15. ),
  16. ),
  17. Padding(
  18. padding: EdgeInsets.only(
  19. left: 120,
  20. ),
  21. child: SizedBox(
  22. child: CircleAvatar(
  23. backgroundImage: NetworkImage(imgUrl),
  24. ),
  25. width: 55,
  26. height: 55,
  27. ),
  28. ),

效果图

二、Container + 内部属性 DecorationImage

和 CircleAvatar 类似,也是通过背景加载图片形式显示图片

  1. Container(
  2. decoration: BoxDecoration(
  3. borderRadius: BorderRadius.circular(100),
  4. image: DecorationImage(
  5. fit: BoxFit.cover,
  6. image: NetworkImage(imgUrl),
  7. ),
  8. ),
  9. width: 40,
  10. height: 40,
  11. )

注意:DecorationImage中 fit: BoxFit.cover 属性要设置,没有这个属性设置图片如果不是长款等比,就不完全是圆形展示

DecorationImage 中的image也为ImageProvider,ImageProvider获取通过AssetImage(本地图片)或 NetworkImage(网络图片)得到

 

三、ClipOval +Image

  1. Padding(
  2. padding: EdgeInsets.only(
  3. left: 180,
  4. ),
  5. child: ClipOval(
  6. child: Image.asset(
  7. "images/default_img43.webp",
  8. width: 55,
  9. height: 55,
  10. ),
  11. ),
  12. ),
  13. Padding(
  14. padding: EdgeInsets.only(
  15. left: 240,
  16. ),
  17. child: ClipOval(
  18. child: Image.network(imgUrl,
  19. width: 50, height: 50, fit: BoxFit.cover),
  20. ),
  21. ),

ClipOval  属性child 通过 Image.asset 或者 Image.network添加圆形图片,fit 模式也要设置 为 fit: BoxFit.cover

 

四、ClipRRect 

从单词意思是圆角矩形,可以通过计算圆角直径和宽度相同实现圆形展示,实际和方法二实现类似,都是通过控制圆角实现圆形效果

  1. ClipRRect(
  2. borderRadius: BorderRadius.circular(30),
  3. child: Image.network(imgUrl,
  4. width: 60, height: 60, fit: BoxFit.cover))

 

圆角图片方案

上面四种圆形图片显示实现中方法二和方法四是通过borderRadius 值 圆角大小实现圆形的,那么圆角可以根据UI大小去设定即实现所要效果

 

  1. Padding(
  2. padding: EdgeInsets.only(left: 300, top: 10),
  3. child: Container(
  4. decoration: BoxDecoration(
  5. borderRadius: BorderRadius.circular(10),
  6. image: DecorationImage(
  7. fit: BoxFit.cover,
  8. image: NetworkImage(imgUrl),
  9. ),
  10. ),
  11. width: 50,
  12. height: 50,
  13. ),
  14. ),
  15. Padding(
  16. padding: EdgeInsets.only(left: 380, top: 10),
  17. child: ClipRRect(
  18. borderRadius: BorderRadius.circular(10),
  19. child: Image.network(imgUrl,
  20. width: 60, height: 60, fit: BoxFit.cover)),
  21. ),

效果如下:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/289576
推荐阅读
相关标签
  

闽ICP备14008679号