Reputation: 3292
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
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
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
Reputation: 6229
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