質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Firebase Authentication

Firebase Authenticationは、Firebaseを利用したユーザーの認証機能です。バックエンドサービス、SDK、アプリでのユーザー認証に使用できるUIライブラリが用意されています。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

Q&A

解決済

1回答

1434閲覧

flutterで画像をfirebasestorageに保存したいのですがエラーになります。

su_da221

総合スコア59

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Firebase Authentication

Firebase Authenticationは、Firebaseを利用したユーザーの認証機能です。バックエンドサービス、SDK、アプリでのユーザー認証に使用できるUIライブラリが用意されています。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

0グッド

0クリップ

投稿2022/09/02 12:52

前提

flutterでFirebase Storageに画像を保存、FirestoreにそのURLを保存するという機能を実装したいのですがエラーになります。
シミュレーターを起動して1度目はできるのですが2度目からはエラーが出てしまいまして、
それからはPCを再起動するまでできません。

バグかと思ったのですが、3日連続でなりましたので解決策を教えてください。

実現したいこと

・画像を保存したい

発生している問題・エラーメッセージ

保存ボタンを押すとこのエラーになります。

[firebase_storage/unknown] An unknown error occurred, please check the server response.

権限の問題もあるようでしたのでルールは下記にしています。

rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write: if true; } } }

firebaseAuthにてログイン状態でもできませんでした。

該当のソースコード

bookState モデル

dart

1import 'dart:io'; 2import 'package:freezed_annotation/freezed_annotation.dart'; 3 4part 'book_state.freezed.dart'; 5 6 7class BookState with _$BookState { 8 const factory BookState({ 9 String? id, 10 String? title, 11 String? author, 12 File? imgFile, 13 }) = _BookState; 14}

画像選択に関する状態管理

dart

1import 'dart:io'; 2 3import 'package:cloud_firestore/cloud_firestore.dart'; 4import 'package:flutter_riverpod/flutter_riverpod.dart'; 5import 'package:image_picker/image_picker.dart'; 6 7import '../model/book_state.dart'; 8 9final bookStateProvider = 10 StateNotifierProvider<bookStateNotifier, BookState>((ref) { 11 return bookStateNotifier(); 12}); 13 14class bookStateNotifier extends StateNotifier<BookState> { 15 bookStateNotifier() : super(const BookState()); 16 17 String? id; 18 String? title; 19 String? author; 20 String? imgUrl; 21 22 File? imgFile; 23 24 bool isLoading = false; // ローディング画面を表示するか 25 26 final ImagePicker picker = ImagePicker(); 27 28 Future<void> imagePick() async { 29 /// 画像を選択 30 final ImagePicker picker = ImagePicker(); 31 final XFile? image = await picker.pickImage(source: ImageSource.gallery); 32 imgFile = File(image!.path); 33 34 state = state.copyWith(imgFile: imgFile); 35 } 36 37 void changeTitle() { 38 state = state.copyWith(title: title); 39 } 40}

画像を選択する部分

dart

1GestureDetector( 2 child: SizedBox( 3 width: 100, 4 height: 160, 5 child: bookState.imgFile != null 6 ? Image.file(bookState.imgFile!) 7 : Container( 8 color: Colors.grey, 9 ), 10 ), 11 onTap: () async { 12 await ref.read(bookStateProvider.notifier).imagePick(); 13 }, 14 ),

画像を保存する部分

dart

1TextButton( 2 onPressed: (() async { 3 final doc = FirebaseFirestore.instance 4 .collection('books') 5 .doc(); 6 await FirebaseStorage.instance 7 .ref('books/${doc.id}') 8 .putFile(bookState.imgFile!); 9 }), 10 child: Text('画像だけ試し')),

エラー箇所はここです。

await FirebaseStorage.instance.ref('books/${doc.id}').putFile(bookState.imgFile!);

試したこと

storageのルールの変更など行いましたがダメでした。
最初の1度だけできるのも謎です。

補足情報(FW/ツールのバージョンなど)

flutter 3.0

cupertino_icons: ^1.0.2 firebase_core: ^1.20.0 cloud_firestore: ^3.4.3 flutter_riverpod: ^1.0.4 flutter_slidable: ^2.0.0 firebase_storage: ^10.3.7 image_picker: ^0.8.5+3 freezed_annotation: ^2.1.0 json_annotation: ^4.6.0 firebase_auth: ^3.7.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

dart

1putData()

で行けました…
公式と書き方違うのはなんでしょうね。
issue投げました

投稿2022/09/29 03:53

su_da221

総合スコア59

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問