I just got rid of my gnat probelm completely, so if you do this right you shouldnt have gnats anymore for a while.
Stuff you will need - Sand ( Homedepot 6$ a bag ) & Diatomaceous Earth ( Food grade/OMRI Homedepot has it for like 5$ too.)
1) Wait for your soil to be dry, dont be afraid to over do it either.
2) Remove the top soil of your pots and replace it with new soil. Sprinkle a layer of Diatomaceous Earth around your plant and under your pot. Gnats like to hang around the bottom of your pot too. This will kill the larvae.
3) Cover the soil with sand, make sure it's good quality sand. Cover everything well, this will prevent gnats from reproducing. Make sure you cover your soil AGAIN with sand after you water your plants, just until you get rid of them.
Honeslty that should be enough for you to see a difference in 2-3 days. I like to spray my plants every 2 weeks with neem oil/protekt, seems to help out a bit as well. Traps do catch a few but they dont get rid of them completely, you need to mess with their life cycle in order to get rid of them for sure. Goodluck bro stay lifted

