flutter - 如何从未来获取字符串在颤振?
问题描述
我有一个奇怪的问题。我需要 a Future<String>
as的值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
. 否则我得到一个错误。
你将如何解决这个问题?
解决方案
AFutureBuilder
将根据Future
. 您所要做的就是检查它是否有数据,然后构建图像。
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();
},
);
}
推荐阅读
- angular - 为什么我的 Angular 路由教程的后续代码显示空白页?
- ios - 如何使用自动布局调整 UILabel 宽度以适合文本?
- c# - 如何使用锁和委托同步方法访问(线程安全)
- r - 如何在R中同时按列名过滤和过滤
- android - ADB 在我的 Android Studio 中的任何设备以及任何模拟器中都没有工作。显示空白没有别的
- c++ - C++ - 指向类类型的指针
- kubernetes - 我将如何使用我的自定义入口默认后端?
- linux - Azure 运行命令返回截断的输出
- javascript - Window.scrollTo(0, 1) 隐藏地址栏不起作用
- powerquery - 结合2个自定义M函数解析文本和分类