As it is not the FLYING GNATS that do any damage it is their larvae that eat your roots.
All of these products are for soil drenching EXCEPT the Spinosad (its both plant or soil) SPINOSAD does not contain BT but it is very similar as it is also a bacterium but it is a broad spectrum pest control. SPINOSAD is the only one of the listed that i use! But i have used GNATOFF before which contains BT.
I would apply the BT solution every 5days for around 20days just to make sure.
An adult fungus gnat can lay up to 300 eggs in its life cycle!
If you're in soil, cover the top 2" if the soil with white sand. that prevents the adults from laying eggs in the dirt. Most good nurseries will sell you beneficial nematodes that will gobble up the larvae. You water those little guys in.
All i did was let my soil dry out till my plants look wilted and they were gone. Let your soil dry out as much as possible 1-2 times and they will be gone i havent seen a gnat in over a month now