Streambuilder帮助Flatter firebase存储

Streambuilder帮助Flatter firebase存储,firebase,flutter,firebase-storage,stream-builder,Firebase,Flutter,Firebase Storage,Stream Builder,您好,我正在尝试使用flutter制作一系列图像,但当我在firebase存储中更新照片时,我应用程序中的照片保持不变。 也许我可以用streambuilder实现这一点,但我不知道如何使用它,也无法学习如何使用它。 有人知道我该怎么做吗?非常感谢你的帮助 class _MyHomePageState extends State<MyHomePage> { final FirebaseStorage storage = FirebaseStorage( app: F

您好,我正在尝试使用flutter制作一系列图像,但当我在firebase存储中更新照片时,我应用程序中的照片保持不变。 也许我可以用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,
          ],
        ));
  }
}
class\u MyHomePageState扩展状态{
最终FirebaseStorage存储=FirebaseStorage(
应用程序:Firestore.instance.app,
storageBucket:'gs:…com/');
UINT8列出图像字节;
字符串errorMsg;
_MyHomePageState(){
storage.ref().child('images/opencv.png').getData(1000000000000)。然后((data)=>
设置状态(){
imageBytes=数据;
})
).catchError((e)=>
设置状态(){
errorMsg=e.error;
})
);
}
@凌驾
小部件构建(构建上下文){
var img=imageBytes!=null?Image.memory(
imageBytes,
适合:BoxFit.cover,
):Text(errorMsg!=null?errorMsg:“正在加载…”);
归还新脚手架(
appBar:新的appBar(
),
正文:新列表视图(
儿童:[
img,
],
));
}
}

Firebase存储不会在客户端加载的映像发生更改时自动通知客户端。当您调用
getData()
时,它只获取一次数据,到此为止

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


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

您好,非常感谢您的提示,您能告诉我如何做到这一点吗?