【问题标题】:Firebase Asking to initialize app even though it has already been initializedFirebase 要求初始化应用程序,即使它已经被初始化
【发布时间】:2021-06-21 03:00:53
【问题描述】:

我创建了这个测试文件来检查可用的 firebase 用户,然后根据响应移动到相应的屏幕。虽然我已经初始化了应用程序,但它仍然显示没有创建 Firebase 默认应用程序的错误。调用 Firebase.initializeApp。我在这里做错了吗?另外,如果有任何其他方法可以检查用户是否登录,请告知。请记住,在显示 MainView() 之前,我还需要从 firestore 获取数据。

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:splashscreen/splashscreen.dart';

import 'MainPages/LoginScreen.dart';
import 'MainPages/MainView.dart';
import 'Services/User.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  Firebase.initializeApp();
  runApp(
    new MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.deepOrange,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      builder: EasyLoading.init(),
      home: new MyApp(),
    ),
  );
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
  Future<Widget> loadFromFuture() async {

    if (FirebaseAuth.instance.currentUser != null) {
      DocumentSnapshot doc = await FirebaseFirestore.instance
          .collection("users")
          .doc(FirebaseAuth.instance.currentUser.uid)
          .get();
      currentUser = MyUser.fromDocument(doc);
      return Future.value(new MainView());
    } else {
      return Future.value(new LoginScreen());
    }
  }

  @override
  Widget build(BuildContext context) {
    return new SplashScreen(
        navigateAfterFuture: loadFromFuture(),
        title: new Text(
          'Welcome In SplashScreen',
          style: new TextStyle(fontWeight: FontWeight.bold, fontSize: 20.0),
        ),
        image: new Image.network('https://i.imgur.com/TyCSG9A.png'),
        backgroundColor: Colors.white,
        styleTextUnderTheLoader: new TextStyle(),
        photoSize: 100.0,
        onClick: () => print("Flutter Egypt"),
        loaderColor: Colors.red);
  }
}

【问题讨论】:

  • 使主函数异步并等待 Firebase.initializeApp();

标签: android firebase flutter dart


【解决方案1】:

你需要等待firebase被初始化

请参考以下代码

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
  runApp(MyApp());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2013-09-09
    • 2020-12-25
    • 1970-01-01
    • 2019-08-06
    • 2018-07-16
    相关资源
    最近更新 更多