使用 Provider 时 FirebaseAuth 出错

Error in FirebaseAuth while using Provider

我想用 firebase_auth 创建一个进入页面。我可以成功登录,但我无法登录。当我尝试登录时,应用程序没有给出任何错误,但它没有通过主页。它仍然在登录页面中。当我现在重新启动调试时,它通过了主页。你能看看我的代码并帮助我吗?

这是我的授权服务代码

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:library_app/models/person.dart';

class FirebaseAuthService {
  final FirebaseAuth _auth = FirebaseAuth.instance;

  Person? _createPerson(User? user) {
    return user == null ? null : Person.fromFirebaseUser(user);
  }

  Stream<Person?> get statusFollower {
    return _auth.authStateChanges().map(_createPerson);
  }

  void createUserEmailAndPassword({
    required String email,
    required String password,
  }) async {
    try {
      var _userCredential = await _auth.createUserWithEmailAndPassword(
        email: email,
        password: password,
      );
      _createPerson(_userCredential.user);
    } catch (e) {
      debugPrint(e.toString());
    }
  }

  loginUserEmailAndPassword({
    required String email,
    required String password,
  }) async {
    try {
      var _userCredential = await _auth.signInWithEmailAndPassword(
        email: email,
        password: password,
      );
      _createPerson(_userCredential.user);
    } catch (e) {
      debugPrint(e.toString());
    }
  }

  void signOut() async {
    await _auth.signOut();
  }
}

这是我的定位码

import 'package:flutter/cupertino.dart';
import 'package:library_app/models/person.dart';
import 'package:library_app/pages/error_page.dart';
import 'package:library_app/pages/loading_page.dart';
import 'package:library_app/pages/main_page.dart';
import 'package:library_app/pages/sign_in_page.dart';
import 'package:library_app/services/firebase_auth_service.dart';
import 'package:provider/provider.dart';

class OrientationSystem extends StatelessWidget {
  const OrientationSystem({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    var _authService = Provider.of<FirebaseAuthService>(context, listen: false);
    return StreamBuilder<Person?>(
      stream: _authService.statusFollower,
      builder: (context, stream) {
        if (stream.connectionState == ConnectionState.waiting) {
          return const LoadingPage();
        }
        if (stream.hasData) {
          return const MainPage();
        }
        if (!stream.hasData) {
          return const SigInPage();
        } else {
          return const ErrorPage();
        }
      },
    );
  }
}

我必须做什么? 请帮助...

您没有在 FirebaseAuthService 构造中扩展或使用 ChangeNotifier class。此外,您需要 notifyListener() 在完成任务后或在您的 FirebaseAuthService class 中更新数据后,以便您的其他 classes 可以收听更新的值. 但是,请将您的问题更新为类似“使用 Provider 时 FirebaseAuth 出错”之类的问题。使您的问题标题尽可能相关,否则您可能会被系统禁止。这是一个建议。