According to my mom, more than once (two different cities) has a dry cleaner machine washed cotton drapes and they shrank some. So, using a dry cleaner is no promise it won't be machine washed unless you trust them and they promise not to.
If one has an heirloom/civil war-era flag, I recommend doing nothing. Don't wash it all.
If one has a vintage cotton flag:
I would hand wash it using Woolite. If there are stains, pre-treat with 50/50 woolite/water using a tooth brush and allow to soak for a day or two without it drying out. I don't recommend using any kind of bleach or fabric brightener. Don't wring it, as it may add wrinkles or tear. Roll it up in one or more dry beach towels to remove excess water. After it's washed, dry it flat on a beach towel. Then store it in a way it won't get soiled and need not be washed for a really long time. If you hand press it flat while it's damp, you wont need to iron it. Ironing could lock in any overlooked stains.
If one has a nylon/polyester flag, machine wash all the way.