Flutter firebase_auth 与不推荐使用的代码有关(从 0.16 到 1.0)

Flutter firebase_auth hassle with deprecated code (From 0.16 to 1.0)

我 post 经过一段时间的研究,但我自己没有找到任何东西。

所以...我有一个名为 FirebaseAuthService 的包装器 class,在升级 firebase_auth 包后我遇到了一些错误。

class FirebaseAuthService {
  final _firebaseAuth = FirebaseAuth.instance;

  User _userFromFirebase(User user) {
    return user == null ? null : User(uid: user.uid);
  }

  Stream<User> get onAuthStateChanged {
    return _firebaseAuth.onAuthStateChanged.map(_userFromFirebase);
  }

  Future<User> signInAnonymously() async {
    final authResult = await _firebaseAuth.signInAnonymously();
    return _userFromFirebase(authResult.user);
  }

  Future<void> signOut() async {
    return await _firebaseAuth.signOut();
  }
}

FirebaseAuthService Screenshot

我需要 auth_widget_builder class

中的 FirebaseAuthService
 Widget build(BuildContext context) {
    print('AuthWidgetBuilder rebuild');
    final authService =
        Provider.of<FirebaseAuthService>(context, listen: false);
    return StreamBuilder<User>(
      stream: authService.onAuthStateChanged,
      builder: (context, snapshot) {
        print('StreamBuilder: ${snapshot.connectionState}');

AuthWidgetBuilder Screenshot

Problems Text Screenshot

我读到 onAuthStateChanged 已弃用,我应该使用 onAuthStateChanges 但仍然无法正常工作,我在另一个 post 上读到 .map() 已弃用。 _userFromFirebase(authResult.user) 上的另一个错误。我不知道从哪里抓住问题......这是我想修改和使用的项目的存储库:https://github.com/bizz84/firebase_user_avatar_flutter 如果有人设法帮助我, 感激不尽...

您应该像这样在 FirebaseAuthService class 中调用函数 authStateChanges。像这样:

   Stream<User> get user {
        return _auth.authStateChanges().map(_userFromFirebaseUser);
      }

使用此代码:

Stream <UserModel.User> get user {  
  return _auth.authStateChanges()
         .asyncMap(_userFromUser)
         .where((user) => user != null)
         .map((user) => user!);
}