To elaborate on this, a working knowledge of some area of mathematics is not like a set of historical facts to be familiar with, or a list of fundamental particles and their properties, or a group of plays or novels to be quoted from, or a set of pigments and their interactions with brushes and paper, or even a code library’s API.
Mathematics is, fundamentally, about model building. The study of mathematics is about learning how to make maps even more than it is about the specific territory being mapped. In my opinion the largest part of mathematical fluency is the constant willingness to test mathematical structures and ideas against each other and against new data, to figure out how parts work at their deepest levels and then to go back and try to see how each one fits with all those known before. What matters in understanding a mathematical concept is not whether you can repeat a witnessed proof step by step or write down a formula, but whether you have an intuitive grasp of the abstraction(s) in question, whether you can explain them to yourself (an ability to explain them to others also recommended), and whether you can apply them to new problems which arise.
It is my belief that this kind of deep understanding and fluency can only be obtained by repeatedly interacting with these abstractions in a wide variety of problems and contexts, writing down the patterns and working through the proofs, questioning the axioms underlying them, asking how they generalize or how they apply to specific cases, and so on. Very little of this work can be done on flash cards, at least for me personally. Indeed, I believe it is precisely the teaching of mathematics as something which can be learned from flash cards which most impedes mathematical education and understanding.
See http://www.maa.org/devlin/LockhartsLament.pdf