Need help with flow sensor

No, I don’t think you did.

Your variable naming is confusing.
You have one sensor, which is the water flow sensor. It needs to be attached to a physical (digital) pin on your MCU and that pin needs top have an interrupt attached to it so that each time the senor’s hall-effect switch is activated by the impeller moving, the data pulse from the sensor is recorded.
GPIO2 is an appropriate pin to use for this.

Your button widget doesn’t need to be connected to a physical pin at all, so the variable buttonPin is redundant. The button widget doesn’t need an interrupt attaching to it either. When a button widget attached to a virtual pin changes state it triggers the BLYNK_WRITE(virtualpin) callback, in the same way as your slider widget does. The difference between the button and slider widgets is that the button widget has two states - off (0) and on(1). You need to capture the state with the param.asInt command and have two different actions (using an if statement) which do two different things depending on whether the button widget is now on or off. In your case this will be to do a digitalWrite of HIGH (on) or LOW(Off) to the physical pin that your physical LED is attached to.
Your physical LED needs to be connected to physical (digital) pin on your MCU and that pin needs to have a pinMode(OUTPUT) declaration in your void setup to allow the digitalWrite commands to that pin to work successfully.
BTW, GPIO0 isn’t a great pin to use for this - see this post for more information:

It is entirely sensible to stop data pulses from your flow meter triggering interrupts whilst you are performing flow rate calculations and writing these to Blynk. However, you are detaching/attaching the interrupt from the buttonPin (which will now be redundant anyway) and not the sensorPin.

I’d suggest that you google ICACHE_RAM_ATTR to understand how it should be used in your ISR function name.

Pete.