База данных Flutter Fiebase получает URL-адрес изображения из хранилища Firebase - PullRequest
0 голосов
/ 03 апреля 2020

Я хочу получить URL-адрес изображения и сохранить его в облачном хранилище Firestore от Firebase в виде строки. Я могу загрузить изображение в FirebaseStorage, но я не могу сохранить URL-адрес изображения в виде строки, чтобы загрузить его, чем в мой облачный Firestore.

Может кто-нибудь помочь мне с этой проблемой?

<!-- language: lang-dart -->

//upload and get image
File imageFile;
  String imageURL;

  Future getImage (bool isCamera) async {
    File image;
    if(isCamera) {
      image = await ImagePicker.pickImage(source: ImageSource.camera);
    }else{
      image = await ImagePicker.pickImage(source: ImageSource.gallery);
    }
    setState(() {
      imageFile = image;
    });
  }

  Future uploadImage(BuildContext context) async {
    String fileName = basename(imageFile.path);
    StorageReference firebaseStorageRef = FirebaseStorage.instance.ref().child(fileName);
    StorageUploadTask uploadTask = firebaseStorageRef.putFile(imageFile);
    StorageTaskSnapshot taskSnapshot = await uploadTask.onComplete;
    setState(() {
      imageURL = await taskSnapshot.ref.getDownloadURL();
    });
  }

//upload to realtime Database
RaisedButton(
                  color: Theme.of(context).primaryColor,
                  textColor: Colors.white,
                  child: Text(isEditNote? "Update" : "Save"),
                  onPressed: () async{
                    if(_key.currentState.validate() && imageFile != null){
                      try {
                        if(isEditNote){
                          uploadImage(context);
                          Book book = Book(
                            image: imageURL,
                          );
                          FirestoreService().updateBook(book);
                          Navigator.pop(context);
                        }else {
                          uploadImage(context);
                          Book book = Book(
                            image: imageURL,
                          );
                          await FirestoreService().addBook(book);
                          Navigator.pop(context);}
                      }catch(e){
                        print(e);
                      }
                    }else{

                    }
                  },

1 Ответ

0 голосов
/ 03 апреля 2020

, чтобы получить imageUrl, вы можете установить его на

imageUrl = await taskSnapshot.ref.getDownloadURL() ;

, как определено

getDownloadURL () → Future Асинхронно извлекает долгоживущий URL загрузки с отзывным токеном. , Это может быть использовано для предоставления доступа к файлу другим пользователям, но при необходимости может быть отозвано разработчиком в консоли Firebase.

в официальной документации:

https://pub.dev/documentation/firebase_storage/latest/firebase_storage/StorageReference-class.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...