1.属性
Image({
Key key,
@required ImageProvider image,
String semanticLabel,
bool excludeFromSemantics: false,
double width, // 控件宽度
double height, // 控件高度
Color color, // 图片的混合色值
BlendMode colorBlendMode, //混合模式
BoxFit fit, //缩放模式
AlignmentGeometry alignment: Alignment.center, //对齐方式
ImageRepeat repeat: ImageRepeat.noRepeat, //重复方式
Rect centerSlice,
bool matchTextDirection: false,
bool gaplessPlayback: false
})
2.本地图片,网络图片,File文件图片,Uint8List资源(byte数组)图片
- Image.asset:用来加载本地资源图片 (在工程根目录下创建一个
images目录,
在pubspec.yaml
中的flutter
部分添加图片) - Image.file:用来加载本地(File文件)图片,比如相册图片
- Image.network:用来加载网络图片
- Image.memory:用来加载Uint8List资源(byte数组)图片
Image.asset("images/test.jpg",width: 150.0,),
Image.network("https://avatars2.githubusercontent.com/u/20411648?s=460&v=4",width: 150.0,),
3. fit 该属性用于在图片的显示空间和图片本身大小不同时指定图片的适应模式,BoxFit的枚举
fill:会拉伸填充满显示空间,图片本身长宽比会发生变化,图片会变形
cover:会按图片的长宽比放大后居中填满显示空间,图片不会变形,超出显示空间部分会被剪裁
contain:这是图片的默认适应规则,图片会在保证图片本身长宽比不变的情况下缩放以适应当前显示空间,图片
不会变形
fitWidth:图片的宽度会缩放到显示空间的宽度,高度会按比例缩放,然后居中显示,图片不会变形,超出显示
空间部分会被剪裁
fitHeight:图片的高度会缩放到显示空间的高度,宽度会按比例缩放,然后居中显示,图片不会变形,超出显示
空间部分会被剪裁
none:图片没有适应策略,会在显示空间内显示图片,如果图片比显示空间大,则显示空间只会显示图片中间部分
3.FadeInImage
const FadeInImage({
Key key,
@required this.placeholder, //占位符
@required this.image,
this.excludeFromSemantics = false,
this.imageSemanticLabel,
this.fadeOutDuration = const Duration(milliseconds: 300),
this.fadeOutCurve = Curves.easeOut,
this.fadeInDuration = const Duration(milliseconds: 700),
this.fadeInCurve = Curves.easeIn,
this.width,
this.height,
this.fit,
this.alignment = Alignment.center,
this.repeat = ImageRepeat.noRepeat,
this.matchTextDirection = false,
})
//内存占位符
//placeholder --transparent_image(第三方插件) 推荐
FadeInImage.memoryNetwork({
Key key,
@required Uint8List placeholder, //占位符
@required String image,
double placeholderScale = 1.0,
double imageScale = 1.0,
this.excludeFromSemantics = false,
this.imageSemanticLabel,
this.fadeOutDuration = const Duration(milliseconds: 300),
this.fadeOutCurve = Curves.easeOut,
this.fadeInDuration = const Duration(milliseconds: 700),
this.fadeInCurve = Curves.easeIn,
this.width,
this.height,
this.fit,
this.alignment = Alignment.center,
this.repeat = ImageRepeat.noRepeat,
this.matchTextDirection = false,
})
//本地图片占位符
FadeInImage.assetNetwork({
Key key,
@required String placeholder, //占位符
@required String image,
AssetBundle bundle,
double placeholderScale,
double imageScale = 1.0,
this.excludeFromSemantics = false,
this.imageSemanticLabel,
this.fadeOutDuration = const Duration(milliseconds: 300),
this.fadeOutCurve = Curves.easeOut,
this.fadeInDuration = const Duration(milliseconds: 700),
this.fadeInCurve = Curves.easeIn,
this.width,
this.height,
this.fit,
this.alignment = Alignment.center,
this.repeat = ImageRepeat.noRepeat,
this.matchTextDirection = false,
})
import 'package:flutter/material.dart';
import 'package:transparent_image/transparent_image.dart';
class ImgExp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("image"),),
body: Column(
children: <Widget>[
FadeInImage.memoryNetwork(
placeholder: kTransparentImage,
image: "http://www.devio.org/img/avatar.png",
width: 150.0,
height: 150.0,
),
FadeInImage.assetNetwork(
placeholder: "images/loading.gif",
image: "http://www.devio.org/img/avatar.png",
width: 150.0,
height: 150.0,
),
],
),
);
}
}
3.CachedNetworkImage (cached_network_image插件) 当没有网络的时候,会使用缓存图片
import 'package:flutter/material.dart';
import 'package:transparent_image/transparent_image.dart';
import 'package:cached_network_image/cached_network_image.dart';
class ImgExp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("image"),
),
body: Column(
children: <Widget>[
FadeInImage.memoryNetwork(
placeholder: kTransparentImage,
image: "http://www.devio.org/img/avatar.png",
width: 150.0,
height: 150.0,
),
FadeInImage.assetNetwork(
placeholder: "images/loading.gif",
image: "http://www.devio.org/img/avatar.png",
width: 150.0,
height: 150.0,
),
CachedNetworkImage(
alignment: Alignment.center,
imageUrl: "http://www.devio.org/img/avatar.png",
placeholder: (context, url) => CircularProgressIndicator(),
errorWidget: (context, url, error) => Icon(Icons.error),
)
],
),
);
}
}
其他图片加载不出来