2

如何在firebase中检查用户电子邮件和密码验证以登录另一个页面我已经在firebase中设置了所有东西并在android studio中设置了依赖项

登录.dart:

import 'package:flutter/material.dart';
import 'package:flutter_app/pages/home.dart';
import 'package:firebase_auth/firebase_auth.dart';

class LoginPage extends StatefulWidget {
  @override
  _LoginPageState createState() => new _LoginPageState();
}

class _LoginPageState extends State<LoginPage> {
  String _email, _password;

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(),
      body: Form(
          child: Column(
            children: <Widget>[
              TextFormField(
                decoration: InputDecoration(
                    labelText: 'Email'
                ),
                onSaved: (input) => _email = input,
              ),
              TextFormField(
                decoration: InputDecoration(
                    labelText: 'Password'
                ),
                onSaved: (input) => _password = input,
                obscureText: true,
              ),
              RaisedButton(
                onPressed: loginUser,
                child: Text('Sign in'),
              ),
            ],
          )
      ),
    );
  }

  Future<FirebaseUser> loginUser() async {
    try {
       await FirebaseAuth.instance
          .signInWithEmailAndPassword(email: _email, password: _password);
      Navigator.push(context, MaterialPageRoute(builder: (context) => Home()));
      // since something changed, let's notify the listeners...
    }  catch (e) {
      // throw the Firebase AuthException that we caught
      throw new AuthException(e.code, e.message);
    }
  }
}

它给了我

E/flutter (20243): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: NoSuchMethodError: Class '_AssertionError' has no instance getter 'code'.
E/flutter (20243): Receiver: Instance of '_AssertionError'
E/flutter (20243): Tried calling: code
E/flutter (20243): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
E/flutter (20243): #1      _LoginPageState.loginUser (package:flutter_app/setup/signin.dart:51:33)
E/flutter (20243): #2      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:706:14)
E/flutter (20243): #3      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:789:36)
E/flutter (20243): #4      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (20243): #5      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11)
E/flutter (20243): #6      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5)
E/flutter (20243): #7      BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:199:7)
E/flutter (20243): #8      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:467:9)
E/flutter (20243): #9      PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:76:12)
E/flutter (20243): #10     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:117:9)

E/flutter (20243): #11 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:379:8) E/flutter (20243): #12 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.飞镖:115:18)

4

2 回答 2

1

回答在评论中进一步提出的问题,要在输入变量时填写变量,然后在调用 Firebase 进行身份验证时更正,请将s 中的onSaved属性更改为:TextFormFieldonChanged

TextFormField(
  decoration: InputDecoration(
    labelText: 'Email'
  ),
  onChanged: (input) => _email = input,
),
TextFormField(
  decoration: InputDecoration(
    labelText: 'Password'
  ),
  onChanged: (input) => _password = input,
  obscureText: true,
),
于 2020-01-01T18:52:08.233 回答
1

在此处输入图像描述

您可以更改 onChanged 属性

 onChanged: (value) => password = value,
于 2020-06-04T17:54:25.393 回答