新的Flutter云火柴棒库Firestore

22 浏览
0 Comments

新的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日
0
0 Comments

您可以按照以下方式修改您的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();
                }
            },
          ),
        );
      }
    }

0
0 Comments

在你的main.dart中添加以下内容\n

void main() async {
  WidgetsFlutterBinding.ensureInitialized(); //add this
  await Firebase.initializeApp(); //initialize here
  runApp(MyApp());
}

\n访问新的文档,了解更多关于使用firebase包的信息。

0