1. 本地圖片android
Image.asset 加載項目資源包的圖片 緩存
//先將圖片拷貝到項目 images 目錄中,而後在 pubspec.yaml文件配置文件相對路徑到 assets Image.asset( 'images/cat.jpg', width: 200, height: 200, )
Image.file 加載手機內置或外置存儲的圖片網絡
//加載Android平臺的外置存儲圖片須要AndroidManifest.xml配置android.permission.READ_EXTERNAL_STORAGE權限 Image.file( File('/0/images/cat.jpg'), width: 200, height: 200, )
2. 網絡圖片框架
Image.network 無本地緩存spa
Image.network( 'https://pic4.zhimg.com/v2-19dced236bdff0c47a6b7ac23ad1fbc3.jpg', width: 200, height: 200, )
FadeInImage.assetNetwork 淡入效果,無本地緩存.net
FadeInImage.assetNetwork( placeholder: 'images/avatar.png', image: 'https://pic1.zhimg.com/v2-7fab628481a26f025188b095b5cfafbc.jpg', width: 200, height: 200 )
CachedNetworkImage 第三方控件,有本地緩存和淡入效果3d
//一、將依賴框架配置到pubspec.yaml文件 dependencies: cached_network_image: ^0.7.0 //二、引入相關類 import 'package:cached_network_image/cached_network_image.dart'; //三、使用控件,默認自帶圖片淡入效果 CachedNetworkImage( imageUrl: 'https://pic4.zhimg.com/v2-19dced236bdff0c47a6b7ac23ad1fbc3.jpg', width: 200, height: 200, )
方式1: CircleAvatarcode
CircleAvatar( //頭像半徑 radius: 60, //頭像圖片 -> NetworkImage網絡圖片,AssetImage項目資源包圖片, FileImage本地存儲圖片 backgroundImage: NetworkImage( 'https://pic2.zhimg.com/v2-639b49f2f6578eabddc458b84eb3c6a1.jpg' ), )
方式2: ClipOvalxml
ClipOval( child: Image.network( 'https://pic2.zhimg.com/v2-639b49f2f6578eabddc458b84eb3c6a1.jpg', width: 120, height: 120, fit: BoxFit.cover, ), )
方式3: Container + BoxDecorationblog
Container( width: 120, height: 120, decoration: BoxDecoration( shape: BoxShape.circle, image: DecorationImage( image: NetworkImage('https://pic2.zhimg.com/v2-639b49f2f6578eabddc458b84eb3c6a1.jpg'), fit: BoxFit.cover ) ) )
方式1: ClipRRect
ClipRRect( borderRadius: BorderRadius.circular(8), child: Image.network( 'https://pic2.zhimg.com/v2-639b49f2f6578eabddc458b84eb3c6a1.jpg', width: 120, height: 120 ) )
方式2: Container + BoxDecoration
Container( width: 120, height: 120, decoration: BoxDecoration( borderRadius: BorderRadius.circular(8), image: DecorationImage( image: NetworkImage('https://pic2.zhimg.com/v2-639b49f2f6578eabddc458b84eb3c6a1.jpg') ) ) )
使用ShapeDecoration能夠作出各類形狀
//斜切角形狀示例 Container( width: 120, height: 120, decoration: ShapeDecoration( shape: BeveledRectangleBorder( borderRadius: BorderRadius.circular(16) ), image: DecorationImage( fit: BoxFit.cover, image: NetworkImage('https://pic2.zhimg.com/v2-639b49f2f6578eabddc458b84eb3c6a1.jpg') ) ) )