Fehler beim Abrufen einer Download-URL aus dem Firebase-Speicher (Bei der gewünschten Referenz ist kein Objekt vorhanden.)

Nov 23 2020

Ich habe versucht, die Download-URL für meine Bilder im Firebase-Speicher abzurufen, damit ich sie für jedes meiner Elemente in der Liste zu meinen Listenansicht-Erstellern "NetworkCatched Images" hinzufügen kann. Wie Sie aus meinem Code unten sehen können, habe ich zuerst eine deklariert Variable am Anfang meiner statusbehafteten Klasse namens "URL", damit ich den Wert ändern kann, indem ich ihn gleich der Download-URL mache, die ich aus dem Firebase-Speicher erhalte, aber es scheint, dass die von mir verwendete asynchrone Funktion nicht einmal ausgeführt wird, weil i Ich habe sichergestellt, dass der Wert der heruntergeladenen URL ausgedruckt wird, nachdem dies erledigt ist. In meiner Debug-Konsole wird jedoch nichts angezeigt. Wo geht hier etwas schief?

Ich bekomme immer wieder diesen Fehler No object exists at the desired reference.

Übrigens ist das "thesnapshot.data()['image']"in meinem Code gleich dem Namen der Bilddatei, z. B. books.jpgder genaue Name der Datei, und es befindet sich in einem Ordner namens Kategorie, wie Sie unten sehen können. Ich würde mich sehr über eine Aufklärung darüber freuen, danke

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();

                                                          

Antworten

Chris32 Nov 24 2020 at 09:50

Ich denke, dass die in Ihrer Referenz enthaltene .ref () nicht so gut funktioniert wie die thesnapshot.data () ['image']. ToString ().

Versuchen Sie so etwas

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

Auszug aus der Dokumentation