1. const Image({
  2. ...
  3. this.width, //图片的宽
  4. this.height, //图片高度
  5. this.color, //图片的混合色值
  6. this.colorBlendMode, // 进行颜色混合处理
  7. this.fit,//缩放模式
  8. this.alignment = Alignment.center, //对齐方式
  9. this.repeat = ImageRepeat.noRepeat, //重复方式
  10. ...
  11. })

1 加载网络图片

  1. class MyHomeBody extends StatelessWidget {
  2. @override
  3. Widget build(BuildContext context) {
  4. return Center(
  5. child: Container(
  6. child: Image.network(
  7. "http://img0.dili360.com/ga/M01/48/3C/wKgBy1kj49qAMVd7ADKmuZ9jug8377.tub.jpg",
  8. alignment: Alignment.topCenter,
  9. repeat: ImageRepeat.repeatY,
  10. color: Colors.red,
  11. colorBlendMode: BlendMode.colorDodge,
  12. ),
  13. width: 300,
  14. height: 300,
  15. color: Colors.yellow,
  16. ),
  17. );
  18. }
  19. }

image.png

2 加载本地图片

image.png
加载本地图片稍微麻烦一点,需要将图片引入pubspec.yaml, 并且需要重启整个程序
image.png

  1. class MyHomeBody extends StatelessWidget {
  2. @override
  3. Widget build(BuildContext context) {
  4. return Center(
  5. child: Container(
  6. width: 300,
  7. height: 300,
  8. color: Colors.yellow,
  9. child: Image.asset("images/a_dog.jpeg"),
  10. ),
  11. );
  12. }
  13. }

3 实现圆形图片

(1) CircleAvatar

image.png

  1. class HomeContent extends StatelessWidget {
  2. @override
  3. Widget build(BuildContext context) {
  4. return Center(
  5. child: CircleAvatar(
  6. radius: 100,
  7. backgroundImage: NetworkImage("https://tva1.sinaimg.cn/large/006y8mN6gy1g7aa03bmfpj3069069mx8.jpg"),
  8. child: Container(
  9. alignment: Alignment(0, .5),
  10. width: 200,
  11. height: 200,
  12. child: Text("兵长利威尔")
  13. ),
  14. ),
  15. );
  16. }
  17. }

(2) ClipOval

image.png

  1. class HomeContent extends StatelessWidget {
  2. @override
  3. Widget build(BuildContext context) {
  4. return Center(
  5. child: ClipOval(
  6. child: Image.network(
  7. "https://tva1.sinaimg.cn/large/006y8mN6gy1g7aa03bmfpj3069069mx8.jpg",
  8. width: 200,
  9. height: 200,
  10. ),
  11. ),
  12. );
  13. }
  14. }

4 实现圆角图片

(1) ClipRRect

image.png

  1. class HomeContent extends StatelessWidget {
  2. @override
  3. Widget build(BuildContext context) {
  4. return Center(
  5. child: ClipRRect(
  6. borderRadius: BorderRadius.circular(10),
  7. child: Image.network(
  8. "https://tva1.sinaimg.cn/large/006y8mN6gy1g7aa03bmfpj3069069mx8.jpg",
  9. width: 200,
  10. height: 200,
  11. ),
  12. ),
  13. );
  14. }
  15. }

(2) Container+BoxDecoration

以后加上

5 缓存图片

在一些情况下,缓存从网络下载的图片用于离线显示是十分方便的,你需要引入 cached_network_image 这个 package 来实现这项功能。
除了缓存,cached_image_network 包也支持占位符和加载后的图片淡入。

  1. CachedNetworkImage(
  2. placeholder: (context, url) => const CircularProgressIndicator(),
  3. imageUrl: 'https://picsum.photos/250?image=9',
  4. ),