Mohammad Nazari
Mohammad Nazari

Reputation: 3025

how to filter a list with condition in dart

I have a list and I want to put a condition on it. for example, I want to have items from list lst that value greater than 10:

var lst = [{"value":5 , "name":"test1"},
           {"value":12 , "name":"test2"},
           {"value":8 , "name":"test3"},
           {"value":23 , "name":"test4"}];

/*
output: value greater than 10 => 
    [{"value":12 , "name":"test2"},
     {"value":23 , "name":"test4"}]
*/

Upvotes: 7

Views: 13208

Answers (4)

Rahul Raj
Rahul Raj

Reputation: 1493

> Just try this Function, catogory_id == 1 is condition here

List<dynamic> chooseCatogory(List<dynamic> list) {
    List newlist = list.where((o) => o['category_id'] == '1').toList();
    return newlist;
  }

Upvotes: 1

Юра Антонов
Юра Антонов

Reputation: 21

try to use this code:

  List lst = [{"value":5 , "name":"test1"}  ,{"value":12 , "name":"test2"}  , {"value":8 , "name":"test3"}  , {"value":23 , "name":"test4"} ];
  List newLst = lst.where( (o) => o['value'] > 5).toList();

  print(newLst);

Upvotes: 2

lrn
lrn

Reputation: 71603

You can either use the where function on iterables to filter its elements, then convert the resulting iterable back to a list, or use the list literal syntax, or a combination of the two where you "spread" the result of where:

var list = [ ... ];
var filtered1 = list.where((e) => e["value"] > 10).toList();
var filtered2 = [for (var e in list) if (e["value"] > 10) e];
var filtered3 = [... list.where((e) => e["value"] > 10)];

Upvotes: 20

Mattia
Mattia

Reputation: 6524

To filter a list base on a condition you can use List.where which takes a test function and returns a new Iterable that contains the elements that match the test.

To get a list with only the values greater than 10 you can filter you list of maps as such:

lst.where((e) => e['value'] > 10); //Returns a lazy Iterable

if you need to modify your list later you can append a .toList(), to get a new list.

Upvotes: 3

Related Questions