Have you considered using a constant current driver ? Not sure on your size constraints but a Meanwell LDD driver is pretty small and relatively cheap and it has an input pin to allow dimming via PWM straight from an Arduino.
I'm not actually putting them in a flashlight, these are intended for headlamps/spotlights on an art car for Burningman.
This seems like an interesting means to limit current, I'll try it out on some less pricey LEDs first.
Please enter a valid email to subscribe
We need to confirm your email address.
To complete the subscription, please click the link in the
email we just sent you.
Thank you for subscribing!
via Egeo 16