Firebase 异常构建消费者 //<UserManager> [core/no-app] 尚未创建 Firebase 应用'[DEFAULT]' - 调用 Firebase.ini



我陷入了这个错误之中,甚至无法想办法修复它。我尝试了很多方法来安装Firebase.initializeApp((;进入我的代码,但我没能以正确的方式完成。我的pubspec.yaml中已经有了包,包括Firebase Core、Auth、Cloud Firestore。。。我相信我的用户管理器是正确的,但我必须在其中调用firebase initialize吗?我把初始化Firebase放在我的主菜单上,就像这样:

Future<void> main() async {
runApp(MyApp());
Firebase.initializeApp();
}

这是一个例外:

════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The following FirebaseException was thrown building Consumer<UserManager>(dirty, dependencies: [_InheritedProviderScope<UserManager>]):
[core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()
The relevant error-causing widget was: 
Consumer<UserManager> file:///C:/Users/adrie/Documents/renata_osorio_nails/lib/screens/login/login_screen.dart:40:22
When the exception was thrown, this was the stack: 
#0      MethodChannelFirebase.app (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:118:5)
#1      Firebase.app (package:firebase_core/src/firebase.dart:52:41)
#2      FirebaseAuth.instance (package:firebase_auth/src/firebase_auth.dart:37:47)
#3      new UserManager (package:renata_osorio_nails/models/user_manager.dart:11:42)
#4      MyApp.build.<anonymous closure> (package:renata_osorio_nails/main.dart:20:22)
...
════════════════════════════════════════════════════════════════════════════════════════════════════

我在登录屏幕上的代码如下:

import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:renata_osorio_nails/helpers/validators.dart';
import 'package:provider/provider.dart';
import 'package:renata_osorio_nails/models/user_manager.dart';
import 'package:renata_osorio_nails/models/user.dart';
class LoginScreen extends StatelessWidget {
final TextEditingController emailController = TextEditingController();
final TextEditingController passController = TextEditingController();
//Controladores de texto
final GlobalKey<FormState> formKey = GlobalKey<FormState>();
//Chave de formulário
final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>();
//Chave Snackbar
@override
Widget build(BuildContext context) {
return Scaffold(
key: scaffoldKey,
appBar: AppBar(
title: const Text('Entrar'),
centerTitle: true,
actions: [FlatButton(
onPressed: (){
Navigator.of(context).pushReplacementNamed('/signup');
},
textColor: Colors.white,
child: const Text('CRIAR CONTA',
style: TextStyle(fontSize: 14),),
)],
),
body: Center(
child: Card(
margin: const EdgeInsets.symmetric(horizontal: 16),
child: Form(
key: formKey,
child: Consumer<UserManager>(
builder: (_, userManager, child){
return ListView(
padding: const EdgeInsets.all(16),
shrinkWrap: true,
children: [
TextFormField(
controller: emailController,
enabled: !userManager.loading,
decoration: const InputDecoration(hintText: 'E-mail'),
keyboardType: TextInputType.emailAddress,
autocorrect: false,
validator: (email) {
if(!emailValid(email))
return 'E-mail inválido';
return null;
},
),
const SizedBox(
height: 16,
),
TextFormField(
controller: passController,
enabled: !userManager.loading,
decoration: const InputDecoration(hintText: 'Senha'),
autocorrect: false,
obscureText: true,
validator: (pass) {
if (pass.isEmpty || pass.length < 8)
return 'Senha inválida';
return null;
},
),
Align(
alignment: Alignment.centerRight,
child: FlatButton(
onPressed: () {},
padding: EdgeInsets.zero,
child: const Text('Esqueci minha senha'),
),
),
const SizedBox(
height: 16,
),
SizedBox(
height: 44,
child: RaisedButton(
onPressed: userManager.loading ? null : () {
if(formKey.currentState.validate()){
context.read()<UserManager>().signIn(
user: AppUser(
email: emailController.text,
password: passController.text,
),
onFail: (e){
scaffoldKey.currentState.showSnackBar(
SnackBar(
content: Text ('Falha ao entrar: $e'),
backgroundColor: Colors.red,
)
);
},
onSuccess: (){
//TODO: Fechar a tela de login
}
);}},
color: Theme.of(context).primaryColor,
disabledColor: Theme.of(context).primaryColor.
withAlpha(100),
textColor: Colors.white,
child: userManager.loading ?
CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation(Colors.white),
) :
const Text(
'Entrar',
style: TextStyle(fontSize: 18),
),
),
),
],
);
},
),
)),
),
);
}
}

我该怎么解决这个问题?

是否检查了该行是否已执行?如果不是,请尝试将该行放在runApp()调用之前或小部件的initState()方法中。

相关内容

最新更新