FadeInImage(
image: _addImageLoadListener(imageUrl),
// TODO 未加载出来前的占位图
placeholder: AssetImage("xxx/xxx.jpg"),
fit: BoxFit.fill,
imageErrorBuilder: (context, error, stackTrace) {
// TODO 图片加载错误后展示的 widget
// print("---图片加载错误---");
// 此处不能 setState
return AssetImage("xxx/xxx.jpg");
},
)
或者
class FadeInImageDemo extends StatelessWidget{
final headUrl =
'https://sf1-ttcdn-tos.pstatp.com/img/user-avatar/5b2b7b85d1c818fa71d9e2e8ba944a44~300x300.image';
@override
Widget build(BuildContext context) {
return FadeInImage(
width: 100,
height: 100,
placeholder: AssetImage(
'assets/images/default_icon.png',
),
image: NetworkImage(headUrl),
);
}
}
FadeInImage(
width: 100,
height: 100,
fadeOutDuration:Duration(seconds: 1),
fadeOutCurve: Curves.easeOutQuad,
fadeInDuration: Duration(seconds: 2),
fadeInCurve: Curves.easeInQuad,
placeholder: AssetImage(
'assets/images/default_icon.png',
),
image: NetworkImage(headUrl),
);
class FadeInImageDemo extends StatelessWidget{
final headUrl =
'https://sf1-ttcdn-tos.pstatp.com/img/user-avatar/5b2b7b85d1c818fa71d9e2e8ba944a44~300x300.image';
@override
Widget build(BuildContext context) {
return
FadeInImage(
width: 100,
height: 100,
fadeOutDuration:Duration(seconds: 1),
fadeOutCurve: Curves.easeOutQuad,
fadeInDuration: Duration(seconds: 2),
fadeInCurve: Curves.easeInQuad,
placeholderErrorBuilder: _placeholderErrorBuilder,
placeholder: AssetImage(
'assets/images/default_icon2.png',
),
image: NetworkImage(headUrl),
);
}
Widget _placeholderErrorBuilder(BuildContext context, Object error, StackTrace? stackTrace) {
return Container(
width: 100,
height: 100,
color: Colors.blue,
);
}
}
我自己的
Container(
width: 110,
height: 110,
child: FadeInImage.assetNetwork(
placeholder: "assets/base_widgets/icon_publish_moment_addphoto.png",
image: photo2,
imageErrorBuilder: (context, error, stackTrace) {
return Container(
width: 100,
height: 100,
color: Colors.grey,
);
},
fit: BoxFit.cover,
),
)