1

错误:映射时我在Stream中遇到错误

参数类型“用户模型?Function(User)' 不能分配给参数类型 'UserModel Function(User?)' 代码和目录

-user.dart

class UserModel {
 final String id;
 UserModel({required this.id});
}

-auth.dart

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_login/models/user.dart';
import 'package:flutter/cupertino.dart';

//Create UserModel Object

UserModel? _userFromFireBase(User user){
  // ignore: unnecessary_null_comparison
  return user != null ? UserModel(uid: user.uid) : null;
}

class AuthService {

  final FirebaseAuth _auth = FirebaseAuth.instance;

  // auth change user stream
  Stream<UserModel> get users{
    return _auth.authStateChanges().map(_userFromFireBase);
  }

  //sign-in method
  Future signInAnon() async{
    try{
      UserCredential result = await _auth.signInAnonymously();
      User? user = result.user;
      return _userFromFireBase(user!);
    }catch(e){
      print(e.toString());
      return null;


}
4

1 回答 1

0

改变

UserModel? _userFromFireBase(User user){
  return user != null ? UserModel(uid: user.uid) : null;
}

UserModel? _userFromFireBase(User? user){
  return user != null ? UserModel(uid: user.uid) : null;
}

您代码中的 _userFromFireBase 用户可以为空,但您传入的 User 对象不是。通过添加 ? 在你的用户类名称之后,比如用户?用户,它会工作

于 2022-01-14T14:33:18.560 回答