chichi
chichi

Reputation: 3292

Flutter: find object and update its value inside the Object

I have the List value like below. The names are randomly listed. So I do not know the order that they are in.

[
   {name: Joe, game: [GTA5]},
   {name: Kai, game: [Pokemon]},
   {name: Jane, game: [Halo]},
]

I want to add LOL to Joe's game value like {name: Joe, game: [GTA5, LOL]}, and able to delete 'GTA5' like {name: Joe, game: []}, this.

I tried with .update() but, I wasn't able to use it to find with the name's value.

How can I find the object inside the list with the name and then update the key game's value?

Upvotes: 2

Views: 2575

Answers (3)

Nastaran Mohammadi
Nastaran Mohammadi

Reputation: 1134

List list = [
   {name: Joe, game: [GTA5]},
   {name: Kai, game: [Pokemon]},
   {name: Jane, game: [Halo]},
]

//to find from list
int index = list.indexWhere((element) => element['name'] == 'Joe');

//to Add to list
list[index]['game'].add('LOL');

//to delete from list
list[index]['game'].remove('GTA5');

Upvotes: 4

fartem
fartem

Reputation: 2531

You should find the needed element by using indexWhere method in a list and then update it. Try:

list[list.indexWhere((item) => item.name == 'Joe')] = newValue;

where newValue - data you want to add to list.

Upvotes: 1

var data = [
   {"name": "Joe", "game": ["GTA5"]},
   {"name": "Kai", "game": ["Pokemon"]},
   {"name": "Jane", "game": ["Halo"]},
];

main(List<String> args) {
  var key = 'Kai';
  var idx = data.indexWhere((e) => e['name']==key);
  List<String> result = data[idx]['game'];
  result.add('Chesu');
  print(data);
  result.remove('Chesu');
  print(data);
}

Upvotes: 1

Related Questions