【问题标题】:Future Builder is taking forever to fetch image in flutterFuture Builder 需要永远在颤动中获取图像
【发布时间】:2020-08-30 10:08:39
【问题描述】:

这是 _getImage 方法,它从 Firebase 存储中检索图像的下载链接,然后是这个下载字符串。

Future<String> _getImage(String filePath) async {
    var _urlImage = await FirebaseStorage.instance
        .ref()
        .child(filePath)
        .getDownloadURL();

    return _urlImage;
}

现在这是将来检索图像的构建器。 blogs[index].pic1 包含firebase storage pic filepath的引用,是正确的。

FutureBuilder<String>(
    future: _getImage(blogs[index].pic1), // async work
    builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
    switch (snapshot.connectionState) {
      case ConnectionState.waiting: return Text('Image Loading....',style: TextStyle(fontSize: 10),);
      default:
        if (snapshot.hasError)
          return Text('Error: ${snapshot.error}');
        else
          return Image.network(snapshot.data.toString());
    }
  },
),

不,显示错误消息,但 ConnectionState.waiting 始终为真。 请帮忙。

这是控制台显示的内容

I/zygote64(20385): Background concurrent copying GC freed 546604(21MB) AllocSpace objects, 134(2MB) LOS objects, 24% free, 74MB/98MB, paused 70us total 509.383ms

【问题讨论】:

    标签: firebase flutter firebase-storage


    【解决方案1】:

    FutureBuilder 中的future 参数应该是一个存储变量,这样FutureBuilder 重建时不会每次都获得新的未来。 将_getImage 的结果存储在有状态的小部件中(例如在initState 中初始化)并将其传递给构建器。

    【讨论】:

    • 但是,我必须以列表视图格式显示图像。所以,它不是固定的
    【解决方案2】:
    FutureBuilder<String>(
        future: _getImage(blogs[index].pic1),
        builder: (BuildContext context, AsyncSnapshot<Welcome> snapshot) {
          if (snapshot.hasData) {
            print("Success");
            return Text("Success!!!")
          } else if (!snapshot.hasData) {
             return Container(
                child: CircularProgressIndicator(),
              );
          } else if (snapshot.error) {
            print("error");
          } else {
            return Container(
                child: CircularProgressIndicator(),
              );
          }
        });
    

    用这个方法老哥

    【讨论】:

      猜你喜欢
      • 2020-10-20
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 2023-03-11
      • 2021-02-23
      • 2020-08-02
      • 2013-12-08
      相关资源
      最近更新 更多