ubuik move_and_slide() is typically meant to be called only once per frame.
Input.is_action_just_pressed() returns true only on a single frame when the action was actually pressed.
On every frame, your code sets the velocity according to directional input vector, but it only sets the dodge velocity on a frame when dodge action was pressed. This means that dodge velocity will be overridden by the direction velocity as soon as the next frame comes about. So it will appear as it has no effect at all.