Construct the circuit as follows:

Run the code shown below:
const int btn_pin = 2;
const int led_pin = 6;
// We need to remember the previous button state between loops
int btn_prev = HIGH;
// Remember the LED state between loops
int led_state = LOW;
void setup() {
// Set up pins
pinMode(btn_pin, INPUT);
pinMode(led_pin, OUTPUT);
// Set LED to default off
digitalWrite(led_pin, led_state);
}
void loop() {
int btn_state;
// Read current button state
btn_state = digitalRead(btn_pin);
// If the button was previously HIGH and now LOW, it's been pressed
if ( (btn_prev == HIGH) && (btn_state == LOW) ) {
// Toggle the LED
if ( led_state == LOW ) {
led_state = HIGH;
} else {
led_state = LOW;
}
digitalWrite(led_pin, led_state);
}
// Remember the previous button state for the next loop iteration
btn_prev = btn_state;
}
Here, we are looking for the moment when the button changes state from HIGH to LOW. Only then do we toggle the LED's state.
Simulator: https://tinkercad.com/things/lk0G2mwAfXq