Basavaraj c kori
Basavaraj c kori

Reputation: 21

The argument type 'UserModel? Function(User)' can't be assigned to the parameter type 'UserModel Function(User?)'

Error : I am getting below error in Stream while mapping

The argument type 'UserModel? Function(User)' can't be assigned to the parameter type 'UserModel Function(User?)' The code and the directories

-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;


}

Upvotes: 1

Views: 611

Answers (1)

SKS81
SKS81

Reputation: 115

change

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

to

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

The _userFromFireBase user in your code is nullable yet the User object you are passing in is not. Make it nullable by adding the ? after your User class name like User? user and it will work

Upvotes: 1

Related Questions