Rb Onairam
Rb Onairam

Reputation: 5

How to assure flutter that you will surely triggers a return statement

I'm trying to build a listview in flutter and the itembuilder needs a return statement in order for it to display on the screen. But I have some problem when it comes to conditioning statement. My goal is I want to make the even buttons have a darker background. I've tried this code inside the body of the scaffold

body: ListView.builder(
          itemCount: 20,
          itemBuilder: (context, index){
            //This is the condition with if else statement
            if(index % 2 == 0){
              return Card(
                child: ListTile(
                  title: Text('${index+1}'),
                  onTap: (){
                    print('Clicked');
                  },
                ),
              );
            }else{
              return Card(
                color: Colors.grey[300],
                child: ListTile(
                  title: Text('${index + 1}'),
                  onTap: () {
                    print('Clicked');
                  },
                ),
              );
            }
          },
        )

This code works. But the else if statement doesn't work. Just like this

body: ListView.builder(
          itemCount: 20,
          itemBuilder: (context, index){
            if(index % 2 == 0){
              return Card(
                child: ListTile(
                  title: Text('${index+1}'),
                  onTap: (){
                    print('Clicked');
                  },
                ),
              );
            }//This statement triggers an error
            else if(index % 2 == 1){
              return Card(
                color: Colors.grey[300],
                child: ListTile(
                  title: Text('${index + 1}'),
                  onTap: () {
                    print('Clicked');
                  },
                ),
              );
            }
          },
        )

There are error because in an if else statement, there is no guarantee that one of the ifs will run. How can I assure flutter that I'm returning something in that clause because I'm afraid in my later projects if I will encounter this kind of problem whenever I really need else if statement. Please respect my question.

Upvotes: 0

Views: 59

Answers (1)

There is no need for the second else if statement. If the num mod 2 isn't equal to 0 then it's definitely an odd number. Using else will solve your problem.

If you insist on using this, with different logic for a future project, you should do something like this

ListView.build(
  itemCount : 20,
  itemBuilder: (context, index) {
    if (condition1) {
      return Text("Condition 1 fulfilled!");
    } else if (condition2) {
      return Text("Condition 2 fulfilled!");
    }

    return Text("Incase no condition was fulfilled!");
}

Upvotes: 1

Related Questions