i am using animator blend tree for basic animation while using this script but only idle animation showing even if the character is moving

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
//variables

[SerializeField] private float moveSpeed;
[SerializeField] private float walkSpeed;
[SerializeField] private float runSpeed;

private Vector3 moveDirection;
private Vector3 velocity;

[SerializeField] private bool isGrounded;
[SerializeField] private float groundCheckDistance;
[SerializeField] private LayerMask groundMask;
[SerializeField] private float gravity;

[SerializeField] private float jumpHeight;

//Rferences

private CharacterController controller;
private Animator anim;

private void Start() {
controller = GetComponent();
anim = GetComponentInChildren();

}
private void Update() {

   Move();

}
private void Move(){

   isGrounded = Physics.CheckSphere(transform.position, groundCheckDistance,groundMask);
   if(isGrounded && velocity.y < 0)
   {
       velocity.y = -2f;
   }
   float moveZ = Input.GetAxis("Vertical");

   moveDirection = new Vector3(0,0,moveZ);
   moveDirection = transform.TransformDirection(moveDirection);

   if(isGrounded)
   {
       if(moveDirection != Vector3.zero && !Input.GetKey(KeyCode.LeftShift))
    {
        Walk();
    }
    else if(moveDirection != Vector3.zero && Input.GetKey(KeyCode.LeftShift))
    {
        Run();
    }
    else if(moveDirection == Vector3.zero)
    {
        Idle();
    }

    moveDirection *= moveSpeed;

    if(Input.GetKeyDown(KeyCode.Space))
    {
        Jump();
    }

   }
    

    

   controller.Move(moveDirection * Time.deltaTime);

   velocity.y += gravity * Time.deltaTime;
   controller.Move(velocity * Time.deltaTime);

}

   private void Idle()
   {
       anim.SetFloat("Speed",0);

   }
   private void Walk()
   {
       moveSpeed = walkSpeed;
       anim.SetFloat("Speed",0.5f);

   }
   private void Run()
   {
       moveSpeed = runSpeed;
       anim.SetFloat("Speed",1);

    }

    private void Jump()
    {
        velocity.y= Mathf.Sqrt(jumpHeight * -2 * gravity);
        

    }

}

Animation is difficult! The first thing you have to do is if you imported your animations, go to their settings and find a box that says : loop time. Check it, or the animations will only play once!