FirebaseストレージからダウンロードURLを取得できません(目的の参照にオブジェクトが存在しません)。

Nov 23 2020

以下のコードからわかるように、Firebaseストレージ内の画像のダウンロードURLを取得して、リスト内の各アイテムのリストビュービルダー「NetworkCatchedImages」に追加できるようにしようとしています。最初に宣言しました。 「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()は、snapshot.data()['image']。toString()と同様にそこには行かないと思います。

このようなものを試してください

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

ドキュメントから抽出