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();
ドキュメントから抽出