UPDATE All on , all off with blynk and physical button

What am i trying:
control all the lights in my house with physical buttons and the blynk app.
what is already ok:
I can control 2 lights with physical buttons and blynk. And the physical button state is synced in blynk.
what isnt ok:
i want to switch off/on all my lights at once with a physical button and with blynk.
(easy when you leave the house to switch all the lights off)

this my code to switch 2 lights whit physical buttons and blynk.
Can anybody help on how i incoporate the all on/off function?

#define BLYNK_PRINT Serial
#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>
#include <SimpleTimer.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "xxx";

// Set your LED and physical button pins here
const int ledPin8 = 8;
const int btnPin20 = 20;
const int ledPin9 = 9;
const int btnPin21 = 21;

SimpleTimer timer;
void checkPhysicalButton20();
void checkPhysicalButton21();

int ledState8 = LOW;
int btnState20 = HIGH;
int ledState9 = LOW;
int btnState21 = HIGH;

// Every time we connect to the cloud...
BLYNK_CONNECTED() {
  // Request the latest state from the server
  Blynk.syncVirtual(V2);
   Blynk.syncVirtual(V3);

  // Alternatively, you could override server state using:
  //Blynk.virtualWrite(V2, ledState);
}

// When App button is pushed - switch the state
BLYNK_WRITE(V2) {
  ledState8 = param.asInt();
  digitalWrite(ledPin8, ledState8);
}
BLYNK_WRITE(V3) {
  ledState9 = param.asInt();
  digitalWrite(ledPin9, ledState9);
}
void checkPhysicalButton20()
{
  if (digitalRead(btnPin20) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState20 != LOW) {

      // Toggle LED state
      ledState8 = !ledState8;
      digitalWrite(ledPin8, ledState8);

      // Update Button Widget
      Blynk.virtualWrite(V2, ledState8);
    }
    btnState20 = LOW;
  } else {
    btnState20 = HIGH;
  }
}
  
  void checkPhysicalButton21()
{
  if (digitalRead(btnPin21) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState21 != LOW) {

      // Toggle LED state
      ledState9 = !ledState9;
      digitalWrite(ledPin9, ledState9);

      // Update Button Widget
      Blynk.virtualWrite(V3, ledState9);
    }
    btnState21 = LOW;
  } else {
    btnState21 = HIGH;
  }
}

void setup()
{
  // Debug console
  Serial.begin(9600);

  Blynk.begin(auth);

  pinMode(ledPin8, OUTPUT);
  pinMode(btnPin20, INPUT_PULLUP);
  digitalWrite(ledPin8, ledState8);
   pinMode(ledPin9, OUTPUT);
  pinMode(btnPin21, INPUT_PULLUP);
  digitalWrite(ledPin9, ledState9);

  // Setup a function to be called every 100 ms
  timer.setInterval(100L, checkPhysicalButton20);
    timer.setInterval(100L, checkPhysicalButton21);
}

void loop()
{
  Blynk.run();
  timer.run();
}

FORMAT YOUR CODE

```cpp
CODE
```

ok. I figured out how to switch all the leds off with a physical button.
what can I do now:
switch the leds one at a time one/off in blynk
switch the leds one at a time one/off with a physical button
switch off all the leds at once with a physical button
the state of leds sync in blynk
problem:
If i switch off all the leds at once with a physical button, and I want to switch them back on with a physical button, then I have to push the physical buttons twice.
If i switch off all the leds at once with a physical button, and I want to switch them back on in blynk, then I have to push the physical buttons only once.

anybody got an idea why this is?

#define BLYNK_PRINT Serial

#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>
#include <SimpleTimer.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "xxx";

// Set your LED and physical button pins here
const int ledPin8 = 8;         
const int btnPin20 = 20;    // button to toggle ledpin8
const int ledPin9 = 9;
const int btnPin21 = 21;    // button to toggle ledpin9
const int btnPin19 = 19;    // button to switch ALL ledpins off

SimpleTimer timer;
void checkPhysicalButton20();
void checkPhysicalButton21();
void checkPhysicalButton19();

int ledState8 = LOW;  
int btnState20 = HIGH;  
int ledState9 = LOW;
int btnState21 = HIGH;
int btnState19 = HIGH;

// Every time we connect to the cloud...
BLYNK_CONNECTED() {
  // Request the latest state from the server
  Blynk.syncVirtual(V2);
   Blynk.syncVirtual(V3);
  // Alternatively, you could override server state using:
  //Blynk.virtualWrite(V2, ledState);
}

// When App button is pushed - switch the state
BLYNK_WRITE(V2) {
  ledState8 = param.asInt();
  digitalWrite(ledPin8, ledState8);
}
BLYNK_WRITE(V3) {
  ledState9 = param.asInt();
  digitalWrite(ledPin9, ledState9);
}
void checkPhysicalButton20()
{
  if (digitalRead(btnPin20) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState20 != LOW) {

      // Toggle LED state
      ledState8 = !ledState8;
      digitalWrite(ledPin8, ledState8);

      // Update Button Widget
      Blynk.virtualWrite(V2, ledState8);
    }
    btnState20 = LOW;
  } else {
    btnState20 = HIGH;
  }
}
  
  void checkPhysicalButton21()
{
  if (digitalRead(btnPin21) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState21 != LOW) {

      // Toggle LED state
      ledState9 = !ledState9;
      digitalWrite(ledPin9, ledState9);

      // Update Button Widget
      Blynk.virtualWrite(V3, ledState9);
    }
    btnState21 = LOW;
  } else {
    btnState21 = HIGH;
  }
  }
  
  void checkPhysicalButton19()    // button to switch ALL leds off
{
  if (digitalRead(btnPin19) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState19 != LOW) {

         
      digitalWrite(ledPin9, LOW);
      digitalWrite(ledPin8, LOW);

      // Update Button Widget
      Blynk.virtualWrite(V3, ledPin9);
      Blynk.virtualWrite(V2, ledPin8);
    }
  }
}

void setup()
{
  // Debug console
  Serial.begin(9600);

  Blynk.begin(auth);

  pinMode(ledPin8, OUTPUT);
  pinMode(btnPin20, INPUT_PULLUP);
  digitalWrite(ledPin8, ledState8);
  pinMode(ledPin9, OUTPUT);
  pinMode(btnPin21, INPUT_PULLUP);
  digitalWrite(ledPin9, ledState9);
  pinMode(btnPin19, INPUT_PULLUP);


  // Setup a function to be called every 100 ms
  timer.setInterval(100L, checkPhysicalButton20);
  timer.setInterval(100L, checkPhysicalButton21);
  timer.setInterval(100L, checkPhysicalButton19);
}

void loop()
{
  Blynk.run();
  timer.run();
}

ok, i found it is because the ledState8 and ledState9 dont get set to LOW when I push button 19

I tried adding digitalWrite(ledState9, LOW), but that didnt do anything

{
  if (digitalRead(btnPin19) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState19 != LOW) {

         
      digitalWrite(ledPin9, LOW);
      digitalWrite(ledPin8, LOW);
      digitalWrite(ledState8, LOW);
     digitalWrite(ledState9, LOW);