Need help with a while loop inside a if loop.

So I'm building a beverage dispenser for my mechatronics project and I can't figure out how to write a certain part of the code. So this test code uses a momentary button, a FSR, and a LED. I'm using the LED for testing purposes instead of a relay and pump. When I press (not hold) the button, I want the LED to turn on only if a certain range of the FSR is met. The LED will stay on until the the analog reading is out of the range. The final design will use 3 buttons and 3 respective FSR ranges.

Now here is where I'm having trouble. The LED turns on when I first press the button within the FSR range, but then when I leave the range, the LED remains on. The serial monitor seems to freeze as well. I've tried using if loops within if loops and even switch cases, but nothing seems to work.

Got any tips for a student in need? Thanks in advance.

int led = 7
int button = 8;
int button_state = 0;

void setup() {
  pinMode(led, OUTPUT); 
  pinMode(button, INPUT);
  Serial.begin(9600);
}
  
 void loop() {
  button_state = digitalRead(button);
  int FSR = analogRead(A0); 
  Serial.println(FSR);
  delay(100);
  if(button_state == HIGH){
    while(FSR >= 200 && FSR < 400){
      digitalWrite(led, HIGH);
    }
  }
  else{
      digitalWrite(led, LOW);
  }
}

lebenjimmons:
Now here is where I'm having trouble. The LED turns on when I first press the button within the FSR range, but then when I leave the range, the LED remains on.

Well, of course. The only thing that turns the LED off is the button being LOW. Furthermore, the loop exits when FSR is out of range, but there's nothing in that loop to read FSR - if it was 300 on entering that loop, it will stay at 300 and the loop will never exit.

Need help with a while loop inside a if loop.

An if statement does NOT cause looping.