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

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

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

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

Flutter

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

Q&A

解決済

1回答

1373閲覧

Flutter、firestore、initializeAppエラー

yuta0113

総合スコア1

Firebase

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

Flutter

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

0グッド

0クリップ

投稿2021/07/07 07:43

編集2021/07/07 20:41

1.「first.dart」からデータ(paramText1、candidateTime1)を受け取り、またFireStoreからもデータ(Item1、Item2)を呼び出しています。
Data (paramText1, candidateTime1) is received from "first.dart", and data (Item1, Item2) is also called from FireStore.

2.Firebase.initializeApp()をしているのですが、Firebase.initializeApp()がされていないというエラーが改善されません。
I'm doing Firebase.initializeApp (), but the error that Firebase.initializeApp () isn't done doesn't improve.

3.どのように修正すれば改善されますか?
How can I fix it?

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

「No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()」

該当のソースコード

dart

1import 'package:flutter/material.dart'; 2import 'package:cloud_firestore/cloud_firestore.dart'; 3import 'package:firebase_core/firebase_core.dart'; 4 5Future<void> main() async { 6 WidgetsFlutterBinding.ensureInitialized(); 7 await Firebase.initializeApp(); 8 runApp(SecoundPage( 9 paramText1:"paramText1", 10 candidateTime1:"candidateTime1", 11 )); 12} 13 14class SecoundPage extends StatelessWidget { 15 16 final String paramText1; 17 final String candidateTime1; 18 19 SecoundPage({Key key, 20 this.paramText1, 21 this.candidateTime1, 22 }) : super(key: key); 23 24 final firedb = FirebaseFirestore.instance; 25 26 27 Widget build(BuildContext context) { 28 return Scaffold( 29 appBar: AppBar( 30 title: Text('SecoundPage'), 31 ), 32 body: SingleChildScrollView( 33 child: Column( 34 children: [ 35 Container( 36 padding: EdgeInsets.only(top:30,bottom:15), 37 child:Column( 38 children: [ 39 Text('date',style: TextStyle(fontWeight: FontWeight.bold) 40 ), 41 Container( 42 child: Column( 43 children: [ 44 Row( 45 mainAxisAlignment: MainAxisAlignment.center, 46 children: [ 47 Text('paramText1が入るところ'), 48 Padding( 49 padding: EdgeInsets.all(10), 50 ), 51 Text('candidateTime1が入るところ'), 52 ], 53 ), 54 ], 55 ), 56 ), 57 Text('pref',style: TextStyle(fontWeight: FontWeight.bold)), 58 Text('Saga'), 59 ElevatedButton( 60 style: ElevatedButton.styleFrom( 61 primary: Colors.grey, 62 ), 63 child: Text('Select Pref'), 64 onPressed: () { 65 Navigator.pop(context); 66 }, 67 ), 68 ], 69 ), 70 ), 71 Container( 72 padding: EdgeInsets.all(20), 73 child: Text('Tittle Text',style: TextStyle(fontWeight: FontWeight.bold)), 74 ), 75 StreamBuilder<QuerySnapshot>( 76 stream: firedb.collection('List').snapshots(), 77 builder: (context, snapshot) { 78 if (!snapshot.hasData) { 79 return Center( 80 child: CircularProgressIndicator(), 81 ); 82 } else 83 return ListView( 84 children: snapshot.data.docs.map((doc) { 85 return Card( 86 child: Column( 87 children: <Widget>[ 88 Container( 89 width: double.infinity, 90 padding: EdgeInsets.only(left: 15, top: 10, bottom: 10), 91 child: Text('${doc['Item1']}', 92 style: TextStyle( 93 fontWeight: FontWeight.bold, 94 fontSize: 18, 95 ), 96 textAlign: TextAlign.left, 97 ), 98 ), 99 Container( 100 width: double.infinity, 101 padding: EdgeInsets.all(10), 102 child: Text('${doc['Item2']}', 103 textAlign: TextAlign.left, 104 ), 105 ), 106 ], 107 ), 108 ); 109 }).toList(), 110 ); 111 }, 112 ), 113 ], 114 ), 115 ), 116 ); 117 } 118} 119

試したこと

7/8追記
テスト環境AとBを作成し、Navigatorで遷移と同時に値をA→Bへ移すと同様にinitializeAppエラーが発生しました。NavigatorによるA→Bの値の移行により、BのinitializeAppへ影響しているようです。

デモAページ

dart

1//デモA 2 3import 'package:flutter/material.dart'; 4import 'package:プロジェクト名/demo.dart'; 5 6void main() { 7 runApp(MyApp()); 8} 9 10class MyApp extends StatelessWidget { 11 12 Widget build(BuildContext context) { 13 return MaterialApp( 14 home: DemoA( 15 ), 16 ); 17 } 18} 19 20class DemoA extends StatefulWidget{ 21 22 _DemoA createState() => _DemoA(); 23} 24 25class _DemoA extends State<DemoA>{ 26 27 final name = 'これをBに届ける'; 28 29 30 Widget build(BuildContext context) { 31 return Scaffold( 32 appBar: AppBar( 33 title: Text('Aページ'), 34 ), 35 body: Center( 36 child:Column( 37 children: [ 38 Text(name), 39 ElevatedButton( 40 child: Text('ボタン'), 41 onPressed: (){ 42 Navigator.push( 43 context, MaterialPageRoute(builder: (context) => SecoundPage( 44 namedata: name, 45 ))); 46 }, 47 ), 48 ], 49 ), 50 ), 51 ); 52 } 53} 54

デモBページ(demo.dart)

dart

1import 'package:flutter/material.dart'; 2import 'package:cloud_firestore/cloud_firestore.dart'; 3import 'package:firebase_core/firebase_core.dart'; 4 5Future<void> main() async { 6 WidgetsFlutterBinding.ensureInitialized(); 7 await Firebase.initializeApp(); 8 runApp(MyApp()); 9} 10 11class MyApp extends StatelessWidget { 12 13 Widget build(BuildContext context) { 14 return MaterialApp( 15 debugShowCheckedModeBanner: false, 16 home: SecoundPage(), 17 ); 18 } 19} 20 21class SecoundPage extends StatefulWidget { 22 23 SecoundPage({this.namedata}); 24 final String namedata; 25 26 27 _SecoundPage createState() => _SecoundPage(); 28} 29 30class _SecoundPage extends State<SecoundPage> { 31 32 33 String namedata; 34 final firedb = FirebaseFirestore.instance; 35 36 37 Widget build(BuildContext context) { 38 return Scaffold( 39 appBar: AppBar( 40 title: Text('Bページ'), 41 ), 42 body: StreamBuilder<QuerySnapshot>( 43 stream: firedb.collection('List').snapshots(), 44 builder: (context, snapshot) { 45 if (!snapshot.hasData) { 46 return Center( 47 child: CircularProgressIndicator(), 48 ); 49 } else 50 return ListView( 51 children: snapshot.data.docs.map((doc) { 52 return Card( 53 child: Column( 54 children: <Widget>[ 55 Text(namedata),//ここにAの値をいれる 56 Container( 57 width: double.infinity, 58 padding: EdgeInsets.only(left: 15, top: 10, bottom: 10), 59 child: Text('${doc['Item1']}', 60 style: TextStyle( 61 fontWeight: FontWeight.bold, 62 fontSize: 18, 63 ), 64 textAlign: TextAlign.left, 65 ), 66 ), 67 68 Container( 69 width: double.infinity, 70 padding: EdgeInsets.all(10), 71 child: Text('${doc['Item2']}', 72 textAlign: TextAlign.left, 73 ), 74 ), 75 ], 76 ), 77 ); 78 }).toList(), 79 ); 80 }, 81 ), 82 ); 83 } 84}

7/7 追記
テスト環境(別のdartファイルを立てた)では問題なく動きます。
親ページから値受け取るために、質問に記載したコードにした際にエラーが返されます。
以下、テスト環境(文字数制限のため削除)


https://qiita.com/edasan/items/f32bc58a4afd0ca92432
に掲載された内容を試しました。

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

Flutter version 2.2.2
Dart version 2.13.3
Android Studio (version 3.1)
Xcode 12.5.1
CocoaPods version 1.10.1
firebase_core: ^1.3.0
cloud_firestore: ^2.3.0

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/07/07 11:23

いや参考サイトfirebaseの初期設定について一切書かれていない。別のみてやった方がいいですぞ。
yuta0113

2021/07/07 11:28

初期設定とはどのようなものを指しますか? よかったら想定されるケースの参考サイトを紹介いただけないでしょうか。
yuta0113

2021/07/07 11:45

すみません、私の質問の仕方が悪かったです。 追記に記載の通り、通常の取得はできます、しかし、親からの遷移で値を受け取る際にそれに合わせて編集するとinitializeAppエラーがシミュレーター上で発生します。
退会済みユーザー

退会済みユーザー

2021/07/07 12:08

よくわかりませんでした。SecoundPageに何か値を渡しているみたいですが、それがfirebaseとどういった関係が?テスト環境がfirebase使っていないのでは?
yuta0113

2021/07/07 12:23

わかりにくくてすみません。 動作するテスト環境全文を追加しました。 これによりFirestoreに補完された、コレクション’List’から’Item1’’Item2’を取得し、ドキュメントの数に応じて連続でCardを返してくれてます。
退会済みユーザー

退会済みユーザー

2021/07/07 13:19

テスト環境じゃないほうはMaterialAppで括ってください
yuta0113

2021/07/07 20:47

MaterialAppで括りましたが改善されませんでした。 テスト環境AとBを作成し、Navigatorで遷移と同時に値をA→Bへ移すと同様にinitializeAppエラーが発生しました。NavigatorによるA→Bの値の移行により、BのinitializeAppへ影響しているようです。 何か解決策をお持ちで無いでしょうか? ※firestoreのデータを呼び出さずにNavigatorの値の移行のみ、Navigatorの値の移行はせずにfirestoreの呼び出しのみであればどちらも動作します。
退会済みユーザー

退会済みユーザー

2021/07/08 01:16

いや、aからbとかまたテスト環境いじってるけど、これはエラー出るよ。 initializeApp呼ばれないよlogを打てばわかる。
退会済みユーザー

退会済みユーザー

2021/07/08 01:19

そもそも直したい方は、テストじゃないほうでしょ。 こっちはmaterial appで括った?
yuta0113

2021/07/08 06:05

Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(MyApp()); } class MyApp extends StatelessWidget{ @override Widget build(BuildContext context) { return MaterialApp( home: SecoundPage( paramText1:"paramText1", candidateTime1:"candidateTime1", ), ); } } このように括ってみたのですが同じエラーとなります。 やり方が違うのでしょうか・・・
退会済みユーザー

退会済みユーザー

2021/07/08 07:31

質問文に書いてあるエラーですよね。一応Firebase.initializeApp();が呼ばれているかprint()でログ出して確かめてみては?
guest

回答1

0

ベストアンサー

変に首を突っ込んだので、お人好しの私は試しにあなたのコードをコピペして動作チェックしました。そしたらMaterialAppで括ってないよってエラーでたので括ったら、ひとまず下記エラーは出ませんでした。
だってmain関数で Firebase.initializeApp();を呼んでいるから当たり前っちゃ当たり前ですね。

そしたら今度は別のエラーが出てたけどそっちはまた頑張ってください。

「No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()」

投稿2021/07/08 01:31

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問