Streambuilder поможет избавиться от хранилища firebase

Здравствуйте, я пытаюсь создать последовательность изображений с флаттером, но когда я обновляю фотографию в хранилище 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,
          ],
        ));
  }
}

person GOMES 0802    schedule 23.06.2020    source источник


Ответы (1)


Firebase Storage не уведомляет клиентов автоматически об изменении загруженного ими изображения. Когда вы вызываете getData(), он получает данные один раз, и это конец.

Если вы хотите автоматически перезагружать изображение при его изменении в хранилище, я рекомендую использовать другую службу для обработки этого уведомления.

Например, вы можете использовать Firebase Realtime Database или Cloud Firestore, чтобы сохранить путь к изображению и дату его последнего изменения, а затем обновить его одновременно с обновлением данных изображения в хранилище. Затем ваш клиентский код будет использовать прослушиватель в реальном времени для базы данных и из этого загружать / перезагружать изображение.

person Frank van Puffelen    schedule 23.06.2020
comment
Привет, большое спасибо за совет. Подскажите, как я могу это сделать? - person GOMES 0802; 23.06.2020