Home > Mobile >  Singleton pattern with uninitialized argument error
Singleton pattern with uninitialized argument error

Time:12-24

I've applied the singleton pattern as in this issue and tried to accept a parameter using the method in this issue. But it gives me this error:

Non-nullable instance field 'id' must be initialized. Try adding an initializer expression, or add a field initializer in this constructor, or mark it 'late'

So where is the issue?

Here is my code:

  static final Singleton _inst = Singleton._internal();
  int id;
  Singleton._internal() {
    // some logic 
  }

  factory Singleton({required int id}) {
    _inst.id = id;
    return _inst;
  }

CodePudding user response:

Without your full code I am going to assume that your full Singleton class looks something like this:

class Singleton {
  int id;

  static final Singleton _inst = Singleton._internal();

  Singleton._internal() {
    // some logic
  }

  factory Singleton({required int id}) {
    _inst.id = id;
    return _inst;
  }
}

The thing is that since nullsafety you can't declare a non-nullable variable without assigning its value or mark it as late (just as said in your error message).

So what you should do is simply declare id like this:

class Singleton {
  late int id;

  // ...
}

Try the full sample on DartPad

CodePudding user response:

In your People or Singlton class you have defined a field named id which is neither nullable nor initialized that is why you are getting this error. Just make your field nullable or assign some value to it to initialize. Like below

To make it nullable

   int? id; 

To initialize

  int id = "";
  • Related