首页 > 解决方案 > 从 Firebase 存储中获取图像 URL 并将其存储在 Firebase 实时数据库中

问题描述

我目前正在做一个大学项目,我正在将图像上传到存储并将图像 URL 保存在实时数据库中。我成功地将图像上传到存储并毫无问题地获取其下载 URL。现在的问题是,当我单击提交按钮时,图像 URL 会打印在终端中,但它不会将其 URL 保存在实时数据库中并显示为空。谁能帮我吗

选择图像并保存到存储

 String imageUrl, displayUrl;
  var url;
  File _image;
  final picker = ImagePicker();

  final db = FirebaseDatabase.instance;

  Reference reference = FirebaseStorage.instance
      .ref()
      .child("UserPlantImages")
      .child(StorageUtil.getString("myString"))
      .child("image" + DateTime.now().toString());

  Future getImage() async {
    final pickedFile = await picker.getImage(source: ImageSource.camera);

    setState(() {
      if (pickedFile != null) {
        _image = File(pickedFile.path);
      } else {
        print('No image selected.');
      }
    });
  }

  upload() async {
    UploadTask uploadTask = reference.putFile(
      _image,
      SettableMetadata(
        customMetadata: {
          'uploaded by': 'A bad guy',
          'description': 'Some description...'
        },
      ),
    );

    uploadTask.whenComplete(() async {
      try {
        imageUrl = await reference.getDownloadURL();
        setState(() {
          displayUrl = imageUrl;
        });
      } catch (onError) {
        print("Error");
      }

      print(imageUrl);
    });
  }

用于将 URL 保存到 Realtime DB 的凸起按钮

RaisedButton(
                    child: Text("Submit"),
                    color: Colors.blue,
                    onPressed: () {
                      if (_formKey.currentState.validate()) {
                        _formKey.currentState.save();
                        upload();
                        displayUrl == null
                            ? print("Image Could not be uploaded")
                            : print("image url is $displayUrl");

                        final ref = db
                            .reference()
                            .child(StorageUtil.getString("myString"))
                        ref.child("plantimg").set(displayUrl.toString());
                      }
                    }),

标签: flutterdartimagepicker

解决方案


推荐阅读