Hello! Launch Character is the correct function to use. You probably put a high launch velocity value to overcome the ground friction, but if the dash is triggered when the character is not touching the ground (which is likely to be the case in your off-edge and ramp situation) the friction is 0 so the character is launched at the requested velocity.
Try to set GroundFriction to 0 on the character movement component before triggering the dash and you should have the same behavior in all cases.