当前位置: 首页 > 知识库问答 >
问题:

新的Flatter Cloud Firestore[副本]

长孙文栋
2023-03-14

我又开始学习颤振(前一段时间开始,但停止了)。您可以在下面找到我的代码。如果我在智能手机上运行应用程序,则会出现错误:[核心/无应用程序]未创建Firebase应用程序['DEFAULT'}-调用Firebase.initializeApp()。我阅读了文档,但由于我使用的是最新版本的firebase\u core:^0.5.0、firebase\u auth:^0.18.0 1、cloud\u firestore:^0.14.0 2,因此文档似乎还没有完成,或者我没有得到它。我需要在哪里初始化那个?为什么这还不够:CollectionReference users=FirebaseFirestore。例子集合(“用户”);

时间线。dart(代码主要来自颤振入门):

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<Timeline> {
  @override
  void initState() {
    // getUserById();
    super.initState();
  }
   
  @override
  Widget build(BuildContext context) {
    CollectionReference users = FirebaseFirestore.instance.collection('users');
    return StreamBuilder<QuerySnapshot>(
      stream: users.snapshots(),
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> 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代码。飞奔

    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(),
    );
  }
}

提前非常感谢!

共有2个答案

农诚
2023-03-14

您可以像这样修改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();
                }
            },
          ),
        );
      }
    }
关玮
2023-03-14

在main.dart中,添加以下内容

dart prettyprint-override">void main() async {
  WidgetsFlutterBinding.ensureInitialized(); //add this
  await Firebase.initializeApp(); //initialize here
  runApp(MyApp());
}

访问新文档以了解有关使用firebase软件包的更多信息

 类似资料:
  • 本文向大家介绍svn 更新工作副本,包括了svn 更新工作副本的使用技巧和注意事项,需要的朋友参考一下 示例 您不是唯一从事此项目的人,对吗?这意味着您的同事也正在对项目数据进行修改。为了保持最新状态并获取其他人所做的修改,您应该svn update在工作副本中运行command。因此,您的工作副本将与存储库同步并下载同事所做的更改。 的简写svn update是svn up。 这是svn upd

  • 我在Android开发,切换到API22后,我开始在我的应用程序中有错误。在stackoverflow上搜索,我找到了解决方案,获得了最新版本的appcompat_v7。 我怎么继续?我可以在哪里下载最新版本或在哪里更新它?

  • 我对java还是新手。是否有办法获取已替换的新字符串? 输出: 期望的新输出: 我想得到输出字符串然后将替换为

  • 我想将我的所有软件包更新到最新版本: 谢谢!!

  • 我通过使用map函数迭代来显示我的状态,这是一个数组。此外,我有一个按钮,在点击反转数组。 我认为我想做什么是相当明显的。但这对我不起作用,我不知道为什么。我必须单击两次来完成第一次还原,出现了奇怪的情况,即呈现的数组和Chrome中React开发工具在组件状态中显示的数组不匹配。 我无法解释这种行为。我开始认为这与我从道具中获得阵列有关,但我真的不知道。有什么想法吗?