gsk
gsk

Reputation: 107

How to iterate a class?

UPDATES

This is my final codes just in case anyone needs it:

int index = -2; //I am not 100% sure why I need to start -2, but  I assume that `forEach((item){})` probably increase `index` by one, and I also increase `index` inside of the loop, so that's probably why.

    recyclable.forEach((item) {
      index++;
      if (item.title == _outputs[0]["label"]) {
        //your code for when the match is found
        //move to the detailed page to show more description
        Navigator.push(
          context,
          MaterialPageRoute(
            builder: (context) => DetailScreen(recyclable: recyclable[index]),
          ),
        );
      }
    }

END OF UPDATES

I created a class named Recyclable, and using the class, I created a list named recyclable. The list recyclable has a string named title, and I am trying to iterate that title to find a match with _outputs[0]["label"].

To do it, I tried the following code:

    while (_outputs[0]["label"] != recyclable[index].title) {
      index++;
    }

Somehow, there was a red underline for index, which I have no idea why.

I also tried for loop as below to remove that red underline by removing index from my code:

    for (var _outputs[0]["label"] in recyclable.title) {
      index++;
    }

But the code seems to be completely off.

FYI, Here is my class Recyclable:

class Recyclable {
  final String title;
  final String description;
  final String instruction;
  final String why;
  final String
      recycle; //put either "recyclable" or "not recyclable" (This item "can be recycled")
  final String
      donate; //put either "can be donated" or "cannot be donated" (This item "can be donated")

  Recyclable(this.title, this.description, this.instruction, this.why,
      this.recycle, this.donate);
}

And here is the list:

List<Recyclable> recyclable = [
Recyclable('PAPERS', 'abc2', 'instruction123', 'why123', 'recyclable',
      'cannot be donated'),
  Recyclable('CLOTHING', 'abc3', 'instruction123', 'why123', 'recyclable',
      'can be donated'),
  Recyclable('CARDBOARDS', 'abc4', 'instruction123', 'why123',
      'can be recycled', 'cannot be donated'),
  Recyclable('COMPUTERS', 'abc4', 'instruction123', 'why123', 'recyclable',
      'can be donated'),
];

Upvotes: 0

Views: 59

Answers (1)

Jigar Patel
Jigar Patel

Reputation: 5423

One way you can iterate over the recyclable list is like this using forEach method

  recyclable.forEach((item){
    if(item.title == _outputs[0]["label"]){
      //your code for when the match is found
    }
  });

Upvotes: 2

Related Questions