You get it from the ware houses in veilstone city. you have to beat the gym leader there first and then prof. rowan's assistant will tell you to come help him. once you get his/her pokedex back you can go into the warehouses.
Chat with our AI personalities
in veilstone city the team galactic warehouse the HM fly will be their.
staravia actually does not learn fly you have to teach it an hm.
Just after you defeat the Grunts at the Veilstone City, there's a warehouse behind it.Enter the warehouse to find HM Fly.
Hows about you try it? If its a flying Pokemon it should be able to.
You get it in heart home city's Team Galtix ware house