【问题标题】:Flutter firebase_auth hassle with deprecated code (From 0.16 to 1.0)Flutter firebase_auth 使用不推荐使用的代码(从 0.16 到 1.0)
【发布时间】:2021-06-29 12:16:04
【问题描述】:

经过一段时间的研究,我发布了这篇文章,但我自己没有找到任何东西。

所以...我有一个名为 FirebaseAuthService 的包装类,升级 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 类中的 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 但仍然无法正常工作,我在另一篇文章中读到 .map() 已弃用。 _userFromFirebase(authResult.user) 上的另一个错误。我不知道从哪里解决问题...这是我要修改和使用的项目的存储库:https://github.com/bizz84/firebase_user_avatar_flutter 如果有人设法帮助我,我将不胜感激够了……

【问题讨论】:

    标签: firebase flutter firebase-authentication flutter-dependencies deprecated


    【解决方案1】:

    使用此代码:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 您好,谢谢您,我想我在其他地方看到了这个答案...我没有变量_auth,您可能指的是_firebaseAuth。现在我在地图中有一个错误(_userFromFirebase)。
      • Firebase 已经定义了一个用户类。 class MyUser{ final String uid; MyUser(this.uid); }class FirebaseAuthService { final _firebaseAuth = FirebaseAuth.instance; MyUser _userFromFirebase(User user) { return user == null ? null : MyUser(uid: user.uid); } Stream&lt;MyUser&gt; get onAuthStateChanged { return _firebaseAuth.onAuthStateChanged.map(_userFromFirebase); } Future&lt;MyUser&gt; signInAnonymously() async { final authResult = await _firebaseAuth.signInAnonymously(); return _userFromFirebase(authResult.user); }
      • 您好,我们几乎可以正常工作了,这一行还有一个错误... Stream get onAuthStateChanged { return _firebaseAuth.onAuthStateChange.map(_userFromFirebase);没有为类型“FirebaseAuth”定义吸气剂“onAuthStateChange”。
      • 我修改为返回 _firebaseAuth.authStateChanges().map(_userFromFirebase);希望它仍然有效哈。
      • 构建时出错.... 失败:构建失败并出现异常。 * 其中:构建文件 'E:\development\flutter\.pub-cache\hosted\pub.dartlang.org\cloud_firestore-1.0.3\android\build.gradle' 行:54 * 出了什么问题:评估时出现问题项目“:cloud_firestore”。 > 在 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 类型的对象上找不到参数 [com.google.firebase:firebase-bom:26.2.0] 的方法 platform()。
      猜你喜欢
      • 2020-02-22
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 2020-10-13
      相关资源
      最近更新 更多