无法使用Navigator.push()从用电子邮件和密码登录的登录窗口导航到Flutter中的其他窗口。

13 浏览
0 Comments

无法使用Navigator.push()从用电子邮件和密码登录的登录窗口导航到Flutter中的其他窗口。

这个问题已经有了答案

没有创建Firebase应用程序\'[DEFAULT]\' - 在Flutter和Firebase中调用Firebase.initializeApp()

我想从登录界面访问主页,但当我试图用现有帐户登录时,按钮不起作用,窗口保持不变。

import 'package:finalproject/Pages/home.dart';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
class LoginPage extends StatefulWidget {
  @override
  _LoginPageState createState() => new _LoginPageState();
}
class _LoginPageState extends State {
  final GlobalKey _formKey = GlobalKey();
  String _email, _password; 
 @override
 Widget build(BuildContext context) {
return new Scaffold(
  appBar: new AppBar(
    title: Text('Sign in'),
  ),
  body: Form(
    key: _formKey, 
    child: Column(
      children: [
        TextFormField(
          validator: (input) {
            if (input.isEmpty) {
              return '  Write your email';
            }
            return null;
          },
          onSaved: (input) => _email = input,
          decoration: InputDecoration(labelText: '  Email'),
        ),
        TextFormField(
          validator: (input) {
            if (input.length < 6) { return ' Write your password'; } return null; }, onSaved: (input) => _password = input,
          decoration: InputDecoration(labelText: '  Password'),
          obscureText: true,
        ),
        RaisedButton(
          onPressed: signIn,
          child: Text('Sign in'),
        ),],),),);}
void signIn() async {
if (_formKey.currentState.validate()) {
  _formKey.currentState.save();
  try {
    // ignore: deprecated_member_use
    UserCredential authResult = await FirebaseAuth.instance
        .signInWithEmailAndPassword(email: _email, password: _password);
    final User user = authResult.user;
    Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => Home()),
    );
  } catch (e) {
    print(e.message);
  }}}}

此外,在我按下“登录”按钮后,我总是会收到这个消息。

I/flutter ( 3130): No Firebase App \'[DEFAULT]\' has been created - call Firebase.initializeApp()

也许这就是原因?

admin 更改状态以发布 2023年5月23日
0
0 Comments

您需要初始化FirebaseApp。您可以在主函数中像这样执行:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

0