The way I have taught drop-it in the past has been in little steps.
The thing I start with is the "out game". This is played either with two of the same toy or two toys of the same value and I'm basically teaching my dog that the word "out" means to let go of the toy and also that letting go of the toy doesn't mean all the fun is over and we're done playing, but that there'll be a reward for giving me the toy.
I do this by throwing one toy for the dog, then calling the dog back, showing her the second toy I am holding, and grabbing the first toy that she's got. A lot of the time, I've found this to be enough for the dog to let go of the first toy once I've reached for it because her attention is already on the second toy. In some cases, I would rotate the toy forward in her mouth (this works well with a tug) just to get her to let it go while keeping her attention focused on the other one. As soon as she'd let go, I would praise her and throw the second toy for her to play with.
As my dog learns that the word "out" means to let go of the toy, I tend to have her come up and immediately release it once I put my hand on it, since she knows I will take that toy and throw the other. That's usually when I start working on "drop it" by putting my hand under the toy, rather than ON the toy, and asking her to "out". If she lets go and it drops into my hand, I praise and reward with the second toy. From there, I would then go to asking her to just drop it without my hand being there, and once she did, reward her with the other toy.
Repeat as necessary, then phase out the second toy and play with just one.