【问题标题】:The parameter 'firebaseFirestore' can't have a value of 'null' because of its type, but the implicit default value is 'null' in flutter参数‘firebaseFirestore’因其类型不能有‘null’值,但flutter中隐含的默认值为‘null’
【发布时间】:2021-08-19 18:09:30
【问题描述】:

我声明了FirebaseFirestoreFireBaseAuth 类型的两个变量,现在我面临一个空安全错误。我在我的类中使用了一个构造函数,并将它们作为参数传递,得到一个错误 - The parameter 'firebaseFirestore' can't have a value of 'null' because of its type, but the implicit default value is 'null' in flutterThe parameter 'firebaseAuth' can't have a value of 'null' because of its type, but the implicit default value is 'null' in flutter

构成我的问题的代码部分是-

import 'package:flutter_instagram_clone_final/repositories/repositories.dart';
import 'package:firebase_auth/firebase_auth.dart' as auth;

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;

然后我尝试用实例初始化它,比如 -

    FirebaseFirestore firebaseFirestore = FirebaseFirestore.instance,

但它给了我一个错误 - The default value of an optional parameter must be constant.

【问题讨论】:

    标签: android firebase flutter dart dart-null-safety


    【解决方案1】:

    为了保证您永远不会看到带有不可为空的空参数 类型,类型检查器要求所有可选参数都具有 可空类型或默认值。

    Understanding null safety | Dart

    您需要将firebaseFirestorefirebaseAuth 设为可空,因为它们是可选的,并且它们的默认值不是常量。

    您可以通过在类型后面添加? 来做到这一点。

    像这样:

        FirebaseFirestore? firebaseFirestore,
        auth.FirebaseAuth? firebaseAuth,
    

    所以你的构造函数可以更新为:

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

    【讨论】:

    • 谢谢兄弟。如此慷慨和善良的你帮助我解决了这个小错误。
    猜你喜欢
    • 2022-08-13
    • 2022-06-14
    • 2021-06-24
    • 2021-10-28
    • 2021-11-12
    • 2022-01-03
    • 2022-01-20
    • 1970-01-01
    • 2023-02-09
    相关资源
    最近更新 更多