首页 > 解决方案 > 初始化程序类型“AuthRepository?” 无法在颤振中分配给字段类型“AuthRepository”

问题描述

错误出现在 authRepository 部分的第 6 行(在第一个代码片段或主代码部分中)。

主要代码 -

class AuthBloc extends Bloc<AuthEvent, AuthState> {
  final AuthRepository  _authRepository;
  var v;
  AuthBloc({
    @required AuthRepository? authRepository
  }) : _authRepository = authRepository super(AuthState.unknown());

这是AuthRepository-

class AuthRepository extends BaseAuthRepository {

  final FirebaseFirestore _firebaseFirestore;
  final auth.FirebaseAuth _firebaseAuth;

  AuthRepository({
    FirebaseFirestore? firebaseFirestore,
    auth.FirebaseAuth? firebaseAuth,
  })  : _firebaseFirestore = firebaseFirestore ?? FirebaseFirestore.instance,
        _firebaseAuth = firebaseAuth ?? auth.FirebaseAuth.instance;

标签: androidfirebaseflutterdartdart-null-safety

解决方案


您正在尝试将可空变量分配给不可空变量。对构造函数使用语法糖(this.var语法)并使用位置参数。

class AuthBloc extends Bloc<AuthEvent, AuthState> {
  final AuthRepository  _authRepository;
  var v;
  AuthBloc(this._authRepository) : super(AuthState.unknown());
}

其他解决方案

如果您仍想将所需的命名参数与私有成员一起使用,请创建_authRepository一个可为空的变量,这将需要在您使用该变量 ( _authRepository) 的任何地方进行更改。

class AuthBloc extends Bloc<AuthEvent, AuthState> {
  final AuthRepository?  _authRepository;
  var v;
  AuthBloc({
    @required AuthRepository? authRepository
  }) : _authRepository = authRepository super(AuthState.unknown());
}

推荐阅读