Launch is something that gives an instant velocity, at the end of the frame. You probably setting it to a very high value, to make the character move. When its moving on ground, after the initial velocity change, it stops, because characters have a very high friction value. So when not supplying velocity constantly, it stops fast.
But when not colliding with ground, the velocity is maintained, thus you get launched very high away.
Instead of giving a very high instant velocity, try setting it every frame, with a much lower value, until you want the dash to continue.
For example, set a float value, called “DashTimer”, set it to 2.0.
In the tick, if DashTimer > 0.0f then DashTimer -= DeltaSec; Launch( ForwardVector * Force * DeltaSec )
Or you could set GroundFriction value ( of character movement component ) to 0 while the dash is active. Dont know if it works but worth a try