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
回答1件
あなたの回答
tips
プレビュー