如何防止将来加载的图像影响其他图像?

时间:2019-08-07 13:21:23

标签: flutter dart

我正在尝试加载网络图像并使用特定坐标对其进行裁剪。为此,我需要将其作为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(),
            );
          }
        },
      ),
    );
  }
}

基本上,我希望下一张图像可以独立加载,并且不会影响其他图像。

0 个答案:

没有答案