Brak adresu URL pobierania z magazynu Firebase (brak obiektu w żądanym miejscu odniesienia).

Nov 23 2020

Próbowałem uzyskać adres URL pobierania moich obrazów w magazynie Firebase, aby móc dodać go do moich narzędzi do tworzenia list „Obrazy z sieci” dla każdego z moich elementów na liście, jak widać z mojego kodu poniżej, najpierw zadeklarowałem zmienna na początku mojej stanowej klasy o nazwie „URL”, więc mogę zmienić wartość, ustawiając ją na równą adresowi URL pobierania, który otrzymuję z magazynu Firebase, ale wygląda na to, że funkcja asynchroniczna, której używam, nawet nie działa, ponieważ i upewniłem się, że po zakończeniu wypisuje wartość pobranego adresu URL, ale nie widzę nic w mojej konsoli debugowania, gdzie tutaj popełniam błąd?

ciągle otrzymuję ten błąd No object exists at the desired reference.

przy okazji, "thesnapshot.data()['image']"w moim kodzie jest równa nazwie pliku obrazu, np. books.jpgktóra jest dokładną nazwą pliku i znajduje się w folderze o nazwie Kategoria, jak widać poniżej, naprawdę doceniłbym trochę oświecenia w tej sprawie, dzięki

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

                                                          

Odpowiedzi

Chris32 Nov 24 2020 at 09:50

Myślę, że .ref () zawarty w twoim odwołaniu nie idzie tam tak dobrze, jak thesnapshot.data () ['image']. ToString ().

Spróbuj czegoś takiego

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

Wyodrębnione z dokumentacji