파이어스토어와 파이어베이스 스토리지를 사용해서 이미지와 함께 글을 올릴 수 있는 기능을 개발해보고 있습니다.(SNS 느낌)
String url = '' 로 변수를 선언해서
uploadImage() async {
FirebaseStorage storage = FirebaseStorage.instance;
Reference ref = storage.ref().child('news_image/${DateTime.now().toString()}');
UploadTask uploadTask = ref.putFile(userImage);
uploadTask.then((res) async {
url = await res.ref.getDownloadURL();
});
}
이와 같이 'url'에 파일 링크를 담는 메소드를 선언했습니다.
print로 확인해본 결과 링크가 잘 담아졌지만..
업로드 버튼을 눌렀을 때
onPressed: () {
if(userImage != null) {
uploadImage();
}
putData();
sendData(newData);
Navigator.pop(context);
}
이와 같이 실행되도록 했습니다.
여기서 putData()는
putData() {
newData.add(inputData1.text.toString());
newData.add(inputData2.text.toString());
newData.add(tag1);
newData.add(tag2);
newData.add(url);
}
이와 같이 한 도큐먼트로 업로드할 정보들을 newData라는 리스트에 담는 메소드이고,
sendData()는 firestore.collection.add()를 실행하는 메소드입니다.
문제는 저 위의 onPressed(){} 내에서 putData()가 uploadImage()보다 먼저 실행돼서인지 업로드된 도큐먼트를 확인해보면 url이 비어 있습니다...
uploadImage가 완료된 이후에 putData가 실행되게 하려면 어떻게 해결해야 할까요...ㅠㅠ