【发布时间】: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