I can't speak for others, but for myself, flow is definitely necessary. At least when learning something new or approaching a new problem. In the case of tying your shoes, once you've learned how, you might only spend a moment doing it each time and improving to perfection. But when you first learned as a child, you probably watched someone else do it multiple times, and sat awkwardly fumbling with laces for a (relatively) lengthy amount of time.
So if I have a running project in a language I am familiar with, I can spend a few minutes here and there making small improvements and honing my skills, but if I want to learn a new language, or just start a new project in an unfamiliar area, I would need hours set aside to really get into a flow. Scraps of time would never provide enough for things to click.
Basically, to more familiar the subject, the less time you need to accomplish something, the more efficiently you can use scattered time. So if you want to really broaden your skillset, it is very difficult when you have a 9-5 with a long commute, a home to maintain, social obligations/family, basic needs, etc.
I suppose that might mean that if you want to make efficient use of your scattered time to perfect skills, you would have to focus on your strongest skills when you have minimal time, and improve them to perfection.