【问题标题】:Streambuilder help flutter firebase storageStreambuilder 帮助 Flutter Firebase 存储
【发布时间】:2020-10-13 10:06:10
【问题描述】:

您好,我正在尝试制作一系列带有抖动的图像,但是当我在 firebase 存储中更新照片时,我的 APP 中的照片保持不变。 也许我可以用 streambuilder 做到这一点,但我不知道如何使用它,我无法学习如何使用它。 有谁知道我该怎么做,非常感谢您的帮助。

class _MyHomePageState extends State<MyHomePage> {

  final FirebaseStorage storage = FirebaseStorage(
      app: Firestore.instance.app,
      storageBucket: 'gs:...com/');

  Uint8List imageBytes;
  String errorMsg;

  _MyHomePageState() {
    storage.ref().child('images/opencv.png').getData(100000000000000).then((data) =>
        setState(() {
          imageBytes = data;
        })
    ).catchError((e) =>
        setState(() {
          errorMsg = e.error;
        })
    );
  }

  @override
  Widget build(BuildContext context) {
    var img = imageBytes != null ? Image.memory(
      imageBytes,
      fit: BoxFit.cover,
    ) : Text(errorMsg != null ? errorMsg : "Loading...");

    return new Scaffold(
        appBar: new AppBar(
        ),
        body: new ListView(
          children: <Widget>[
            img,
          ],
        ));
  }
}

【问题讨论】:

    标签: firebase flutter firebase-storage stream-builder


    【解决方案1】:

    Firebase 存储不会在客户端加载的图像发生更改时自动通知客户端。当您调用 getData() 时,它会获取一次数据,然后就结束了。

    如果您想在存储中更改图像时自动重新加载图像,我建议使用其他服务来处理该通知。

    例如,您可以使用 Firebase 实时数据库或 Cloud Firestore 来存储图像的路径和上次修改时间,然后在更新存储中的图像数据的同时更新它。然后,您的客户端代码将使用数据库的实时侦听器,并从中加载/重新加载图像。

    【讨论】:

    • 您好,非常感谢您的提示,您能告诉我该怎么做吗?
    猜你喜欢
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 2020-12-14
    • 2023-01-12
    • 2021-01-28
    相关资源
    最近更新 更多