【发布时间】:2019-05-18 04:57:45
【问题描述】:
我尝试在从 Firebase 读取数据时进行异步操作,但它不起作用,
这是我尝试过的:
Future<String> test() async {
var cacheManager = await CacheManager.getInstance(); //await here is OKAY
DatabaseReference firebaseRef = FirebaseDatabase.instance.reference();
firebaseRef.child('...').once().then((DataSnapshot snapshot) {
Map<dynamic,dynamic> map = snapshot.value;
map.forEach((key, url) {
print('$key: $url'); //OKAY
await precacheImage(new NetworkImage(url), context); //doesn't cache images
});
});
return "";
}
我明白了:
错误:意外的令牌“等待”。
我也试过了:
Future<Map> test() async { //<---- added type Map
...
map.forEach((key, url) async { //<--- added async
//var file = await cacheManager.getFile(url);
await precacheImage(new NetworkImage(url), context); //same, cache doesn't work
});
但我明白了:
E/颤振(3971):#1
__InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.forEach (dart:collection/runtime/libcompact_hash.dart:370:8)
有什么想法吗?
【问题讨论】:
-
正如我的answer to your previous question 中所说,您需要将包含此代码的方法标记为
async。每次使用await时都需要这样做。 -
当我用“async”标记方法然后我得到“异步暂停”,很抱歉,但我开始了,这个问题对我来说真的不明显
-
嗯?我以前从未有过。希望其他人知道如何解决这个问题。
-
我用另一种方法替换了 forEach 中的方法来尝试预缓存图像,但是图像的预加载不起作用:( url 无论如何都是正确的,奇怪...
标签: javascript firebase flutter