Firebase 저장소에서 다운로드 URL을 가져 오지 못했습니다 (원하는 참조에 객체가 없습니다.)

Nov 23 2020

아래 코드에서 볼 수 있듯이 목록의 각 항목에 대해 목록보기 빌더 "NetworkCatched Images"에 추가 할 수 있도록 firebase 저장소에있는 내 이미지의 다운로드 URL을 가져 오려고했습니다. "URL"이라는 상태 저장 클래스의 시작 부분에 변수가 있으므로 firebase 저장소에서 얻은 다운로드 URL과 동일하게 만들어 값을 변경할 수 있지만 사용중인 비동기 함수가 실행되지 않는 것 같습니다. 다운로드 한 URL의 값을 인쇄했는지 확인했지만 디버그 콘솔에 아무것도 표시되지 않습니다. 여기서 어디가 잘못되고 있습니까?

이 오류가 계속 발생합니다. No object exists at the desired reference.

"thesnapshot.data()['image']"그건 그렇고, 내 코드는 이미지 파일의 이름과 동일합니다. 예 books.jpg를 들어 파일 의 정확한 이름이며 아래에서 볼 수 있듯이 범주라는 폴더에 있습니다. 이에 대한 깨달음에 감사드립니다.

class Home extends State<HomeScreen> {
  var url;
  ListView.builder(shrinkWrap: true, padding: EdgeInsets.all(0), physics: NeverScrollableScrollPhysics(), itemCount: snapshot.data.documents.length, itemBuilder: (BuildContext context, int index) 
    {
        DocumentSnapshot thesnapshot = snapshot.data.docs[index];
        current_category = thesnapshot.data()['category'];
        printUrl() async {
            Reference ref = FirebaseStorage.instance.ref().child("category/" + thesnapshot.data()['image'].toString());
            var togo = (await ref.getDownloadURL()).toString();
            setState(() {
            url =  togo;
            print(url);
        });
    
}

printUrl();

                                                          

답변

Chris32 Nov 24 2020 at 09:50

참조에 포함 된 .ref ()는 thesnapshot.data () [ 'image']. toString ()만큼 거기에 가지 않는다고 생각합니다.

이런 식으로 시도

Future<void> downloadURLExample() async {
  String downloadURL = await firebase_storage.FirebaseStorage.instance
      .ref('users/123/avatar.jpg')
      .getDownloadURL();

문서 에서 발췌