1

我收到以下错误:

The return type 'AuthUser?' isn't a 'User?', as required by the closure's context.

从下面的代码:

class AuthService {
  final FirebaseAuth authInstance = FirebaseAuth.instance;
  final FirebaseFirestore firestoreInstance = FirebaseFirestore.instance;

  Stream<User?> get currentUser => authInstance.authStateChanges().map(
        (User? firebaseUser) => (firebaseUser != null) ? AuthUser.fromFirebaseUser(user: firebaseUser) : null,
      );
}

下面是模型类的代码:

import 'package:firebase_auth/firebase_auth.dart';

class AuthUser {
  String? uid;
  String? email;
  String? userName;

  AuthUser({
    required this.uid,
    required this.email,
    required this.userName,
  });

  AuthUser.fromFirebaseUser({User? user}) {
    uid = user!.uid;
    email = user.email;
    userName = user.displayName;
  }
}

我还想知道如何使用StreamProvider<AuthUser>.value.

请让我知道是Consumer小部件还是Provider.of(context)小部件,哪一个适合访问这些值。

在此先感谢您的帮助。

4

2 回答 2

1

您的流正在将User模型从 Firebase 映射到您的AuthUser模型。所以你需要改变currentUsergetter的返回类型。

改变这个:

Stream<User?> get currentUser => authInstance.authStateChanges().map(
        (User? firebaseUser) => (firebaseUser != null) ? AuthUser.fromFirebaseUser(user: firebaseUser) : null,
);

对此:

Stream<AuthUser?> get currentUser => authInstance.authStateChanges().map(
        (User? firebaseUser) => (firebaseUser != null) ? AuthUser.fromFirebaseUser(user: firebaseUser) : null,
);
于 2021-08-13T11:00:31.640 回答
-1

Auth 拥有自己的存储空间,可以存储所有这些信息,您只需清除全球用户,然后在应用程序中的任何位置评估信息......

例子

User users

然后是身份验证示例

final googleUser = await googleSignIn.signIn();
      final googleAuth = await googleUser.authentication;
      final AuthCredential credential = GoogleAuthProvider.credential(
        accessToken: googleAuth?.accessToken,
        idToken: googleAuth?.idToken,
      );
      users = (await auth.signInWithCredential(credential)).user;
      if (users == null) {
        return false;
      }
      return true;
    } catch (e) {
      print('this is error .......$e');
      return null;
    }
于 2021-08-13T07:33:21.260 回答