Right now you are creating the widget every time you add a value to your timer. I would suggest adding the timer widget on begin play.
You can make well functioning and precise timer, that takes frame drops into consideration:
To stop and reset this timer, you can add a simple check to see if the player is within the trigger box.
Inside the widget you can cast to your player and access the timer variable that way: