簡體   English   中英

參數“firebaseFirestore”因其類型而不能具有“null”值,但 flutter 中的隱式默認值為“null”

[英]The parameter 'firebaseFirestore' can't have a value of 'null' because of its type, but the implicit default value is 'null' in flutter

我聲明了兩個FirebaseFirestoreFireBaseAuth類型的變量,現在我面臨 null 安全錯誤。 我在我的 class 中使用構造函數,並將它們作為參數傳遞,但出現錯誤 - 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.

為了保證您永遠不會看到具有不可為空類型的 null 參數,類型檢查器要求所有可選參數都具有可空類型或默認值。

了解null安全| Dart

您需要使firebaseFirestorefirebaseAuth可以為空,因為它們是可選的並且它們的默認值不是恆定的。

你可以通過添加來做到這一點? 在類型之后。

像這樣:

    FirebaseFirestore? firebaseFirestore,
    auth.FirebaseAuth? firebaseAuth,

所以你的構造函數可以更新為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM