无法从方法“_userFromFirebaseUser”返回“Null”类型的值,因为它的返回类型为“User”

时间:2021-06-10 11:19:21

标签: firebase flutter dart

import "package:firebase_auth/firebase_auth.dart";
import 'package:signup/models/user.dart';

class Auth {
  final FirebaseAuth _auth = FirebaseAuth.instance;

  User _userFromFirebaseUser(FirebaseUser user) {
    if (user != null) {
      return User(uid: user.uid);
    } else {
      return null;
    }
  }

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

  //anonomously

  Future signInAnon() async {
    try {
      AuthResult result = await _auth.signInAnonymously();
      FirebaseUser user = result.user;
      return _userFromFirebaseUser(user);
    } catch (e) {
      print(e.toString());
      return null;
    }
  }
  //signin with pwd

  //register with pwd

  //sign-out

}

我在使用 _userFromFirebaseUser 方法时出错。据说它不能返回空值,如果我使用自动校正器选项来纠正它

User? _userFromFirebaseUser(FirebaseUser user) {
    if (user != null) {
      return User(uid: user.uid);
    } else {
      return null;
    }
  }

但是我在 getter 中出错了。试着帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

我不知道您是否可以这样做,但这是一个选择:

User _userFromFirebaseUser(FirebaseUser user) {
    User _user = new User();
    if (user != null)
        _user.uid = user.uid;
    return _user;
  }

根据那个响应,您可以检查用户的 de uid 是否为空,因此继续您的流程。