Shreyansh Sharma
Shreyansh Sharma

Reputation: 1834

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

I declared two variables of type FirebaseFirestore and FireBaseAuth, and now i am facing an error of null safety. I am using a constructor in my class, and passing them as paraeters, with getting an error of - The parameter 'firebaseFirestore' can't have a value of 'null' because of its type, but the implicit default value is 'null' in flutter and The parameter 'firebaseAuth' can't have a value of 'null' because of its type, but the implicit default value is 'null' in flutter.

The code part consisting of my problem is -

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;

Then I tried to initialize it with instance, like -

    FirebaseFirestore firebaseFirestore = FirebaseFirestore.instance,

But it is giving me an error that - The default value of an optional parameter must be constant.

Upvotes: 1

Views: 1212

Answers (1)

Victor Eronmosele
Victor Eronmosele

Reputation: 7716

To guarantee that you never see a null parameter with a non-nullable type, the type checker requires all optional parameters to either have a nullable type or a default value.

Understanding null safety | Dart

You need to make firebaseFirestore and firebaseAuth nullable since they are optional and their default values are not constant.

You can do that by adding ? right after the type.

Like this:

    FirebaseFirestore? firebaseFirestore,
    auth.FirebaseAuth? firebaseAuth,

So your constructor can be updated to this:

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

Upvotes: 1

Related Questions