Resetting a for loop in flutter

Viewed 36

I am attempting to pull all the Panel options out that would fit in the Final length and put them into a list.

for(var PanelOption in PanelWidthOptions.reversed){
              if(PanelOption == FinalLength[i+1]){
                var panelwidth = int.parse(FinalLength[i+1]) - int.parse(PanelOption);
                FinalLength[i+1] = (int.parse(FinalLength[i+1]) - int.parse(PanelOption)).toString();
                print(PanelOption);
              }else{
                if((int.parse(FinalLength[i+1]) - int.parse(PanelOption)) % 1 == 0 && int.parse(FinalLength[i+1]) - int.parse(PanelOption) >= 8){
                var panelwidth = int.parse(FinalLength[i+1]) - int.parse(PanelOption);
                FinalLength[i+1] = (int.parse(FinalLength[i+1]) - int.parse(PanelOption)).toString();
                print(PanelOption);
                // CalculatedWalls.add();
                }
              }
              
        }

But there is cases where 2 of the same panel widths might be able to be used. How would I reset the for loop to make sure all indexes are ran again?

FULL METHOD:

 CalculateLowestCost(){
    for(var i = 0; i < Walls.length - 1 ; i++){
      if(SelectedOptions.length > 0){
        for(var l = 0; l < SelectedOptions.length; l++){
            if(ActualWalls[i] == SelectedWalls[l]){
            FinalLength[i+1] = (int.parse(FinalLength[i+1]) - int.parse(SelectedWidths[l])).toString();
            }
            for(var PanelOption in PanelWidthOptions.reversed){
              if((int.parse(FinalLength[i+1]) - int.parse(PanelOption)) % 1 == 0 && int.parse(FinalLength[i+1]) - int.parse(PanelOption) >= 8){
                var panelwidth = int.parse(FinalLength[i+1]) - int.parse(PanelOption);
                FinalLength[i+1] = (int.parse(FinalLength[i+1]) - int.parse(PanelOption)).toString();
                print(PanelOption);
                // CalculatedWalls.add();
              }
            }
        }
      }else{
            for(var PanelOption in PanelWidthOptions.reversed){
              if(PanelOption == FinalLength[i+1]){
                var panelwidth = int.parse(FinalLength[i+1]) - int.parse(PanelOption);
                FinalLength[i+1] = (int.parse(FinalLength[i+1]) - int.parse(PanelOption)).toString();
                print(PanelOption);
              }else{
                if((int.parse(FinalLength[i+1]) - int.parse(PanelOption)) % 1 == 0 && int.parse(FinalLength[i+1]) - int.parse(PanelOption) >= 8){
                var panelwidth = int.parse(FinalLength[i+1]) - int.parse(PanelOption);
                FinalLength[i+1] = (int.parse(FinalLength[i+1]) - int.parse(PanelOption)).toString();
                print(PanelOption);
                // CalculatedWalls.add();
                }
              }
              
        }
      }
    }
  }

1 Answers

Try initialzing and declaring the loop variables out side the loop.

When we change the value of particular variable then the loop will continue to some more iteration.


CalculateLowestCost(){
int i = 0;
int l = 0;
int j=0;
    for(i = 0; i < Walls.length - 1 ; i++){
      if(SelectedOptions.length > 0){
        for(l = 0; l < SelectedOptions.length; l++){
            if(ActualWalls[i] == SelectedWalls[l]){
            FinalLength[i+1] = (int.parse(FinalLength[i+1]) - int.parse(SelectedWidths[l])).toString();
            }
            for(var PanelOption in PanelWidthOptions.reversed){
              if((int.parse(FinalLength[i+1]) - int.parse(PanelOption)) % 1 == 0 && int.parse(FinalLength[i+1]) - int.parse(PanelOption) >= 8){
                var panelwidth = int.parse(FinalLength[i+1]) - int.parse(PanelOption);
                FinalLength[i+1] = (int.parse(FinalLength[i+1]) - int.parse(PanelOption)).toString();
                print(PanelOption);
                // CalculatedWalls.add();
              }
            }
        }
      }else{
            for(j=0; j<PanelWidthOptions.reversed.length;j++){
var PanelOption = PanelWidthOptions.reversed.toList()[j];
              if(PanelOption == FinalLength[i+1]){
                var panelwidth = int.parse(FinalLength[i+1]) - int.parse(PanelOption);
                FinalLength[i+1] = (int.parse(FinalLength[i+1]) - int.parse(PanelOption)).toString();
                print(PanelOption);
              }else{
                if((int.parse(FinalLength[i+1]) - int.parse(PanelOption)) % 1 == 0 && int.parse(FinalLength[i+1]) - int.parse(PanelOption) >= 8){
                var panelwidth = int.parse(FinalLength[i+1]) - int.parse(PanelOption);
                FinalLength[i+1] = (int.parse(FinalLength[i+1]) - int.parse(PanelOption)).toString();
                print(PanelOption);
                // CalculatedWalls.add();
                }
              }
              
        }
      }
    }
  }

Now to reset the loop change the value of j as j=0; where you want to restart the loop.

Add var PanelOption = PanelWidthOptions.reversed.toList()[j];

Related