新的Flutter云火柴棒库Firestore
新的Flutter云火柴棒库Firestore
这个问题已经有了答案:
在Flutter和Firebase中没有创建Firebase应用程序“[DEFAULT]”- 调用Firebase.initializeApp()
我重新开始学习flutter(以前开始过但停止了)。 您可以在下面找到我的代码。 如果我在智能手机上运行应用程序,它会给我错误信息:[core / no-app]未创建Firebase应用程序[\'DEFAULT\'} - 调用Firebase.initializeApp()。 我在文档中阅读过,但由于我使用最近版本的firebase_core:^0.5.0,firebase_auth:^0.18.0+1,cloud_firestore:^0.14.0+2
看起来文档没有完成或我没有理解。 我需要在哪里初始化该应用程序? 为什么这个不够:CollectionReference users = FirebaseFirestore.instance.collection(\'users\');
timeline.dart(代码主要来自flutter入门):
import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:example/widgets/header.dart'; import 'package:example/widgets/progress.dart'; class Timeline extends StatefulWidget { @override _TimelineState createState() => _TimelineState(); } class _TimelineState extends State { @override void initState() { // getUserById(); super.initState(); } @override Widget build(BuildContext context) { CollectionReference users = FirebaseFirestore.instance.collection('users'); return StreamBuilder( stream: users.snapshots(), builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.hasError) { return Text('Something went wrong'); } if (snapshot.connectionState == ConnectionState.waiting) { return Text("Loading"); } return new ListView( children: snapshot.data.documents.map((DocumentSnapshot document) { return new ListTile( title: new Text(document.data()['username']), subtitle: new Text(document.data()['posts_count']), ); }).toList(), ); }, ); } }
这是我的main.dart代码
import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; import 'pages/home.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Example', debugShowCheckedModeBanner: false, theme: ThemeData( primarySwatch: Colors.red, accentColor: Colors.blue, ), home: Home(), ); } }
非常感谢您的帮助!
admin 更改状态以发布 2023年5月21日
您可以按照以下方式修改您的MyApp小部件,以使其正常工作。
class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( home: FutureBuilder( future: Firebase.initializeApp(), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { if (snapshot.hasError) { print(snapshot.error.toString()); return Center(child: Text('Error')); } else { // ! RETURN THE SCREEN YOU WANT HERE return Timeline(); } }, ), ); } }
在你的main.dart中添加以下内容\n
void main() async { WidgetsFlutterBinding.ensureInitialized(); //add this await Firebase.initializeApp(); //initialize here runApp(MyApp()); }
\n访问新的文档,了解更多关于使用firebase包的信息。