[英]How to get a String from a Future<String> in Flutter?
我有一个奇怪的问题。 我需要Future<String>
的值作为String
来显示带有CachedNetworkImage
的图像。 因为我必须等待来自 Firebase Storage 的 downloadUrl,所以我发现无法将它用作普通字符串。
这是我需要值的小部件
Container(child: Obx(
() {
return CachedNetworkImage(
imageUrl: _getImage(), // Here I need the value as String
height: Get.height,
fit: BoxFit.cover);
},
))
这是我的_getImage()
函数
Future<String> _getImage() async {
var url = return await MyStorage().getDownloadUrl(url);
return url;
}
getDownloadUrl()
只返回一个带有 Firebase 存储下载 url 的字符串
Future<String> getDownloadUrl(ref) async {
final StorageReference storage = FirebaseStorage().ref().child(ref);
final url = await storage.getDownloadURL();
return url.toString();
}
因为我肯定要等待getDownloadUrl()
我没有机会将值作为String
返回。 但我需要它作为String
。 否则我会收到错误消息。
你会如何解决这个问题?
FutureBuilder
将根据Future
的状态构建 UI。 您所要做的就是检查它是否有数据,然后构建映像。
Future<String> myFutureString() async {
await Future.delayed(Duration(seconds: 1));
return 'Hello';
}
@override
Widget build(BuildContext context) {
return FutureBuilder<String>(
future: myFutureString(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Container(
child: Text(snapshot.data),
);
}
return CircularProgressIndicator();
},
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.