我正在尝试加载网络图像并使用特定坐标对其进行裁剪。为此,我需要将其作为future
传递,这样我才能管理是否加载了图像。我认为问题在于该Widget不会创建新的future
实例,而只使用旧的实例。
我尝试将其传递给唯一键,在状态之间添加淡入淡出的过渡,然后将其移至新的Statefull
小部件。如果我不传递唯一键,则上一张图像将一直闪烁(我插入新列表开头的元素),如果我传递唯一键或移至Statefull
小部件,则所有图像都会闪烁。
class _ThumbnailState extends State<Thumbnail> {
Future _getImage(String url) {
Completer completer = new Completer();
new NetworkImage(url).resolve(new ImageConfiguration()).addListener(
new ImageStreamListener((ImageInfo image, bool synchronousCall) {
completer.complete(image.image);
}));
return completer.future;
}
@override
Widget build(BuildContext context) {
return AspectRatio(
aspectRatio: widget.vehicle.vehicleRegion.width /
widget.vehicle.vehicleRegion.height,
child: FutureBuilder(
future: _getImage(widget.vehicle.image),
builder: (context, snapshot) {
if (snapshot.hasData) {
return ClipRRect(
borderRadius: BorderRadius.circular(4),
child: ExtendedRawImage(
image: snapshot.data,
fit: BoxFit.cover,
soucreRect: Rect.fromLTWH(
widget.vehicle.vehicleRegion.x,
widget.vehicle.vehicleRegion.y,
widget.vehicle.vehicleRegion.width,
widget.vehicle.vehicleRegion.height,
),
),
);
} else {
return Center(
child: CircularProgressIndicator(),
);
}
},
),
);
}
}
基本上,我希望下一张图像可以独立加载,并且不会影响其他图像。