Как получить URL загрузки из базы данных Firebase в реальном времени изображений, загруженных в хранилище FireBase в флаттере - PullRequest
0 голосов
/ 29 апреля 2019

Я загружаю изображения с мобильного в хранилище firebase с помощью кода, приведенного ниже, проблема в том, что я хочу показать загруженные изображения конечному пользователю, но файл URLs.json возвращает ноль, потому что база данных реального времени firebase ноль. Итак, как я могу сохранить изображения в базе данных в реальном времени и получить файл URLs.json для его вызова в приложении или получить файл URLs.json для хранения в Firebase?

Загрузка в Firebase Storage-

FirebaseStorage _storage = FirebaseStorage.instance;

  Future uploadPic(File file) async {
    if (file != null) {
      setState(() {
        isLoading = true;
      });
      var rng = new Random();
      String randomId = rng.nextInt(10000000).toString();
      String fileName = "" +
          randomId +
          '${file.absolute.path.endsWith('.png') ? '.png' : '.jpg'}';

      StorageReference reference = _storage.ref().child(fileName);
      StorageUploadTask uploadTask = reference.putFile(file);

      await (await uploadTask.onComplete).ref.getDownloadURL().then((url) {
        setState(() {
          _imageUrl = url.toString();
          updateRTDatabaseWithURL(_imageUrl, randomId);
          showInSnackBar('File Uploaded Successfully');

          _image = null;
          isLoading = false;
        });
      });
    } else
      showInSnackBar('Please, Choose a File');
  }

  List<dynamic> urlList;

  updateRTDatabaseWithURL(imageURL, id) async {
     var url = 'https://<Project_Name>.firebaseio.com/URLs.json';

    await http.get(url).then((res) {
      if (res.statusCode == 200) {
        var resData = json.decode(res.body);
        setState(() {
          urlList = resData['URL'];
        });
        urlList.add(imageURL);

        FirebaseDatabase()
            .reference()
            .child('URLs')
            .update({'URL': urlList}).then((v) {
          showInSnackBar('URL added to the Firebase List');
        }).catchError((e) {
          print(e.message);
        });
      }
    });
  }
...