You are declaring a variable at the beginning to be false, then checking to see if the value is either false or true. But since the value is always assigned the value false at the beginning, it can never enter the else control section so the button is always "on".
Usually after the code goes out of scope all local variables that are declared within that scope are released to the operating system. A static variable does not, and stays persistent even after the scope resolves. By using a static variable here, you can achieve the result you were looking for, which was storing the state of the variable to compare it against the previous state.