Search code examples
dartconstructorfinal

Constructor with not initialized final class variables


I have this class:

class Entry {
  final String id;
  final List<ListEntry> listEntries;

  Entry({this.listEntries}):
        id = Uuid().v4();

  Entry.withId({this.id, this.listEntries});
}
// create new class instance
var e = Entry();

Now when I call any method on e.listEntries I will get a NPE because it is not initialized. Is there a way to have it default to an empty list in case the constructor argument is not provided?


Solution

  • You can use a Factory constructor:

    class Entry {
      final String id;
      final List<String> listEntries;
    
      factory Entry({List<String> listEntries}) {
        return Entry._(listEntries ?? []);
      }
    
      Entry._(this.listEntries):
            id = Uuid().v4();
    
      Entry.withId({this.id, this.listEntries});
    }