Venelin
Venelin

Reputation: 3306

Dart - Map with List as a value

I have this:

  List<ForumCategories>? forumCategories;
  var mainCats = List<ForumCategories>.empty(growable: true);
  var subCats = <int, List<ForumCategories>>{};

Than this is what I do in order to populate it:

for (var i = 0; i < forumCategories!.length; i++) {
  if (forumCategories![i].main == 0) {
    subCats[forumCategories![i].slave]?.add(forumCategories![i]);
  }
}

And than when I do:

var size = subCats.length;
print("SUBCATS: $size");

Output is always: SUBCATS: 0

This does not populate the map. Any idea why ?

Upvotes: 0

Views: 59

Answers (1)

Gwhyyy
Gwhyyy

Reputation: 9206

because you're trying to add an item to a null List, see here:

if (forumCategories![i].main == 0) {
subCats[forumCategories![i].slave]?.add(forumCategories![i]);
}

subCats[forumCategories![i].slave] does not exist yet in your map, it's like you saying:

null.add(forumCategories![i]);

nothing will happen. you need to initialize it by an empty List if it's null like this:

if (forumCategories![i].main == 0) {

(subCats[forumCategories![i].slave] ?? []).add(forumCategories![i]) // this will assign an empty list only the first time when it's null, then it adds elements to it.
 }

now before adding elements to that list it will find the empty list to add.

Upvotes: 1

Related Questions