如何使用CachedNetworkImage在Flutter中实现重试?

Cod*_*red 6 flutter

我在 Flutter 中使用 CachedNetworkImage,我想知道如何实现图像下载失败时重试的机制?在我的示例中,位于 errorWidget > GestureDetector > onTap 部分。

@override
  Widget build(BuildContext context) {
    final imgKey = Key(imgUrl);

    return CachedNetworkImage(
      key: imgKey,
      imageUrl: imgUrl,
      ...
      errorWidget: (context, url, error) => Center(
        child: GestureDetector(
          child: Column(
            children: [
              const Icon(
                Icons.refresh,
                color: Colors.red,
              ),
              const Text('Error downloading image.'),
              const Text('Tap to retry.'),
            ],
          ),
          onTap: () { // Implement image reload here
            setState(() {
              // manager
              //     .removeFile(url)
              //     .then((value) => manager.getSingleFile(url));
            });
          },
        ),
      ),
      cacheManager: manager,
    );
  }
Run Code Online (Sandbox Code Playgroud)

ben*_*min 1

您可以使用https://pub.dev/packages/flutter_image而不是 CachedNetworkImage;

像这样使用它:

new Image(
    image: new NetworkImageWithRetry(imageUrl),
),
Run Code Online (Sandbox Code Playgroud)

它是关于缓存的: https://github.com/flutter/flutter_image/blob/master/lib/network.dart#L26