Flutter中网络图片加载体现Image.network的具体用法

[复制链接]
发表于 2025-10-17 11:36:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Image.network的具体用法
Image.network 是 Flutter 中用于从网络加载图片的便捷方法。它基于 NetworkImage,可以快速加载并体现网络图片。以下是 Image.network 的具体用法和常见参数阐明。

根本用法

最简朴的用法是提供一个图片的 URL:
dart
复制
  1. Image.network('https://example.com/image.png')
复制代码

常用参数

Image.network 提供了很多参数来定制图片的加载和体现举动。以下是一些常用的参数:
1. src (必填)

图片的 URL 地点。
dart
复制
  1. Image.network('https://example.com/image.png')
复制代码
2. headers

设置 HTTP 哀求头,比方禁用缓存:
dart
复制
  1. Image.network(
  2.   'https://example.com/image.png',
  3.   headers: {
  4.     'Cache-Control': 'no-cache',
  5.   },
  6. )
复制代码
3. width 和 height

设置图片的宽度和高度:
dart
复制
  1. Image.network(
  2.   'https://example.com/image.png',
  3.   width: 200,
  4.   height: 200,
  5. )
复制代码
4. fit

设置图片的添补方式,常见的值有:

  •         BoxFit.cover:保持宽高比,填满整个空间。
  •         BoxFit.contain:保持宽高比,完备体现图片。
  •         BoxFit.fill:拉伸图片以填满整个空间。
dart
复制
  1. Image.network(
  2.   'https://example.com/image.png',
  3.   fit: BoxFit.cover,
  4. )
复制代码
5. alignment

设置图片的对齐方式,比方居中:
dart
复制
  1. Image.network(
  2.   'https://example.com/image.png',
  3.   alignment: Alignment.center,
  4. )
复制代码
6. color 和 colorBlendMode

为图片添加颜色滤镜:
dart
复制
  1. Image.network(
  2.   'https://example.com/image.png',
  3.   color: Colors.blue,
  4.   colorBlendMode: BlendMode.colorBurn,
  5. )
复制代码
7. loadingBuilder

自界说图片加载过程中的体现内容:
dart
复制
  1. Image.network(
  2.   'https://example.com/image.png',
  3.   loadingBuilder: (BuildContext context, Widget child, ImageChunkEvent? loadingProgress) {
  4.     if (loadingProgress == null) {
  5.       return child; // 加载完成,显示图片
  6.     }
  7.     return Center(
  8.       child: CircularProgressIndicator(
  9.         value: loadingProgress.expectedTotalBytes != null
  10.             ? loadingProgress.cumulativeBytesLoaded / loadingProgress.expectedTotalBytes!
  11.             : null,
  12.       ),
  13.     );
  14.   },
  15. )
复制代码
8. errorBuilder

自界说图片加载失败时的体现内容:
dart
复制
  1. Image.network(
  2.   'https://example.com/invalid-url.png',
  3.   errorBuilder: (BuildContext context, Object error, StackTrace? stackTrace) {
  4.     return Text('加载失败');
  5.   },
  6. )
复制代码
9. frameBuilder

自界说图片加载过程中的动画结果:
dart
复制
  1. Image.network(
  2.   'https://example.com/image.png',
  3.   frameBuilder: (BuildContext context, Widget child, int? frame, bool wasSynchronouslyLoaded) {
  4.     if (wasSynchronouslyLoaded) {
  5.       return child; // 图片已同步加载完成
  6.     }
  7.     return AnimatedOpacity(
  8.       child: child,
  9.       opacity: frame == null ? 0 : 1,
  10.       duration: const Duration(seconds: 1),
  11.       curve: Curves.easeOut,
  12.     );
  13.   },
  14. )
复制代码
10. cacheWidth 和 cacheHeight

设置图片的缓存分辨率(以像素为单位),用于优化内存占用:
dart
复制
  1. Image.network(
  2.   'https://example.com/image.png',
  3.   cacheWidth: 100,
  4.   cacheHeight: 100,
  5. )
复制代码
11. repeat

设置图片的重复方式,比方平铺:
dart
复制
  1. Image.network(
  2.   'https://example.com/image.png',
  3.   repeat: ImageRepeat.repeat,
  4. )
复制代码
12. filterQuality

设置图片的过滤质量,比方 FilterQuality.low 或 FilterQuality.high:
dart
复制
  1. Image.network(
  2.   'https://example.com/image.png',
  3.   filterQuality: FilterQuality.low,
  4. )
复制代码

完备示例

以下是一个完备的示例,展示了 Image.network 的常见用法:
dart
复制
  1. import 'package:flutter/material.dart';
  2. void main() {
  3.   runApp(MyApp());
  4. }
  5. class MyApp extends StatelessWidget {
  6.   @override
  7.   Widget build(BuildContext context) {
  8.     return MaterialApp(
  9.       home: Scaffold(
  10.         appBar: AppBar(title: Text('Image.network 示例')),
  11.         body: Center(
  12.           child: Image.network(
  13.             'https://example.com/image.png',
  14.             width: 300,
  15.             height: 200,
  16.             fit: BoxFit.cover,
  17.             headers: {
  18.               'Cache-Control': 'no-cache',
  19.             },
  20.             loadingBuilder: (BuildContext context, Widget child, ImageChunkEvent? loadingProgress) {
  21.               if (loadingProgress == null) {
  22.                 return child;
  23.               }
  24.               return CircularProgressIndicator(
  25.                 value: loadingProgress.expectedTotalBytes != null
  26.                     ? loadingProgress.cumulativeBytesLoaded / loadingProgress.expectedTotalBytes!
  27.                     : null,
  28.               );
  29.             },
  30.             errorBuilder: (BuildContext context, Object error, StackTrace? stackTrace) {
  31.               return Text('加载失败');
  32.             },
  33.           ),
  34.         ),
  35.       ),
  36.     );
  37.   }
  38. }
复制代码

总结

Image.network 是一个非常强盛的工具,可以轻松加载和体现网络图片。通过公道使用其参数,你可以实现图片的自界说加载、错误处理处罚、动画结果等功能

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表