Arduino, pin mode is always LOW when it should be HIGH : I'm working with simple arduino where i'm trying to turn on LED light by using serial print and turning off the LED Light when i click the button or use the switch on the board, when the pin is in the ground.

Atm, i can turn on the led light by serial, however when i click the button the led light will switch off but then never switch On. and that's happening because the state is being stuck at LOW all the time and never switching back to High. 

Here's the code

    // constants won't change. They're used here to
    // set pin numbers:
    const int buttonPin = 2;     // the number of the pushbutton pin
    const int ledPin =  3;      // the number of the LED pin
    int state = 0;
    // variables will change:
    int buttonState = 0;         // variable for reading the pushbutton status

    void setup() {
    // initialize the LED pin as an output:
    pinMode(ledPin, OUTPUT);
    // initialize the pushbutton pin as an input:
    pinMode(buttonPin, INPUT);

    Serial.begin(9600);
    }

    void loop() {
    // read the state of the pushbutton value:
     buttonState = digitalRead(buttonPin);


     if (Serial.available())
     {
     state = Serial.parseInt();

    
     if (state == 1)
    {
      digitalWrite(ledPin, HIGH);
      Serial.println("ON");


    } 
     }

    // check if the pushbutton is pressed.
    // if it is, the buttonState is HIGH:
    if (buttonState == LOW) {
    state = 0;
    // turn LED OFF:
    Serial.println("off");
    digitalWrite(ledPin, LOW);
    } 

    // IMP : This Never runs. the state is always off therefore when i send to serial " 1" the led just blinks 
    else {
    
    Serial.println("off");
    
    } 
  

 
    }

the state is always off therefore when i send to serial " 1" the led just blinks 