繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM