我有以下代码,从Firebase存储中获取图像作为Image。现在,我想将此图像存储在我的CachedNetworkImage中,以便我不必每次从DB中获取它。由于cachednetworkimage需要一个URL而我正在获取一个Image,我该如何使用cachednetworkimage?
这是我的代码:
这是我的代码:
final FirebaseStorage storage = FirebaseStorage(
app: Firestore.instance.app,
storageBucket: 'gs://my-project.appspot.com');
Uint8List imageBytes;
String errorMsg;
_MyHomePageState() {
storage.ref().child('selfies/me2.jpg').getData(10000000).then((data) =>
setState(() {
imageBytes = data;
})
).catchError((e) =>
setState(() {
errorMsg = e.error;
})
);
}
@override
Widget build(BuildContext context) {
var img = imageBytes != null ? Image.memory(
imageBytes,
fit: BoxFit.cover,
) : Text(errorMsg != null ? errorMsg : "Loading...");
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new ListView(
children: <Widget>[
img,
],
));
}
}```
ref.getDownloadURL()
,他们可以直接使用CachedNetworkImage
。 如果 OP 操作的是 blob,则需要跳过CachedNetworkImage
,并按照答案中所述使用DefaultCacheManager
缓存/检索 blob,并使用例如Image
小部件。 答案示例提供了一些缓存预热机制,如果 OP 希望在 Firebase 图像加载的副作用中构建缓存,则在某些情况下非常有用。 注意:我不会依赖 URL,因为它们可能包含一些动态参数,而是使用cacheKey
参数,例如selfies/me2.jpg
。 - NeverEndingQueue