【问题标题】:The argument type 'UserModel? Function(User)' can't be assigned to the parameter type 'UserModel Function(User?)'参数类型“用户模型? Function(User)' 不能分配给参数类型'UserModel Function(User?)'
【发布时间】:2021-10-19 22:26:59
【问题描述】:

错误:我在 Stream while mapping

中遇到错误

参数类型'UserModel? 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;


}

【问题讨论】:

标签: flutter firebase-authentication flutter-web flutter-streambuilder


【解决方案1】:

改变

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 对象不是。通过添加 ?在你的用户类名称之后,比如用户?用户,它会工作

【讨论】:

    猜你喜欢
    • 2021-08-20
    • 2023-01-25
    • 2021-02-12
    • 1970-01-01
    • 2021-09-04
    • 2022-01-17
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多