如何在 Flutter 中从未来获取字符串<String>?



我有一个奇怪的问题。我需要Future<String>的值作为String来显示具有CachedNetworkImage的图像。因为我必须等待来自Firebase Storage的下载URL,所以我找不到将其用作普通字符串的方法。

这是我需要值的小工具

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 Storage的下载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();
},
);
}

相关内容

最新更新