Tom*_*652 9 dart flutter flutter-image
我已尝试以下所有方法Widget
从网络加载图像:
Image.network()
CachedNetworkImage()
还有他们的ImageProvider
:
NetworkImage
CachedNetworkImageProvider
无法bool
选择不缓存图像。我发现的唯一方法是加载ImageProvider
类似的内容initState()
,然后evict()
立即调用。
我真的不知道这是否真的有效,或者这是否是最好的方法......
有什么方法可以阻止“本地”网络缓存吗?
luk*_*uke 18
您只需在图像网址末尾添加?
后即可实现此目的。timestamp
Image.network(
'${imgUrl}?${DateTime.now().millisecondsSinceEpoch.toString()}',
fit: BoxFit.cover,
),
Run Code Online (Sandbox Code Playgroud)
我刚刚创建了一个小部件,它将图像作为 URL 获取,然后将其下载Uint8List
并在小部件中显示Image.memory
。
你可以这样使用它:
NonCacheNetworkImage('https://riverpod.dev/img/logo.png'),
Run Code Online (Sandbox Code Playgroud)
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"),
);
},
);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7177 次 |
最近记录: |