A super simplified example to show why you dash further at lower framerate:
Say dt = 10 and dash = 30 and you move 100*dt every tick,
move 100*dt = 1000 px
dash = 30 - 10 = 20
move 100*dt = 1000 px
dash = 20 - 10 = 10
move 100*dt = 1000 px
dash = 10 - 10 = 0
move 100*dt = 1000 px
dashing = false
total distance: 4000 px
at half the framerate, dt = 20:
move 100*dt = 2000 px
dash = 30 - 20 = 10
move 100*dt = 2000 px
dash = 10 - 20 = -10
move 100*dt = 2000 px
dashing = false
total distance: 6000 px
-------------
In your capx (if I've calculated it right):
at 60 fps you move 1250*1/60 = 20.83px per tick
22 times
total distance: 458px
at 30 fps you move 1250*1/30 = 41.67px per tick
12 times
total distance: 500px
-------------
So you want to move a fixed distance, say 450px. At the start of the dash set dashDistance = 450. Every tick, move 1250*dt OR dashDistance, whichever is smaller and then subtract the distance moved from dashDistance. So you'll be moving 1250*dt until the last tick and the you just move the remaining distance to make it 450 and don't overshoot.
if dashing == true
if dashDistance < 1250*dt
move forward dashDistance
set dashing = false
else
move forward 1250*dt
subtract 1250*dt from dashDistance