如何防止网络颤振缓存图像?

How to prevent caching images from network flutter?

我已经尝试了以下所有方法 Widget 从网络加载图像:

还有他们的 ImageProvider :

没有bool选择不缓存图片。我发现的唯一方法是像 initState() 中一样加载 ImageProvider,然后立即调用 evict()

我真的不知道这是否真的有效,或者这是否是最好的方法...

有什么方法可以防止“本地”从网络缓存?

我刚刚创建了一个小部件,它以 URL 形式获取图像,然后将其下载为 Uint8List 并在 Image.memory 小部件中显示。

你可以这样使用它:

NonCacheNetworkImage('https://riverpod.dev/img/logo.png'),
import 'dart:typed_data';

import 'package:flutter/material.dart';
import 'package:http/http.dart';

class NonCacheNetworkImage extends StatelessWidget {
  const NonCacheNetworkImage(this.imageUrl, {Key? key}) : super(key: key);
  final String imageUrl;
  Future<Uint8List> getImageBytes() async {
    Response response = await get(Uri.parse(imageUrl));
    return response.bodyBytes;
  }

  @override
  Widget build(BuildContext context) {
    return FutureBuilder<Uint8List>(
      future: getImageBytes(),
      builder: (context, snapshot) {
        if (snapshot.hasData) return Image.memory(snapshot.data!);
        return SizedBox(
          width: 100,
          height: 100,
          child: Text("NO DATA"),
        );
      },
    );
  }
}

您只需在图片 url.

末尾添加 ? 后跟 timestamp 即可实现此目的
Image.network(
   '${imgUrl}?${DateTime.now().millisecondsSinceEpoch.toString()}',
   fit: BoxFit.cover,
),