C.B.
IMO, 2 is a bit young for decision-making. I would let your son decide what they are going to eat.
As for not eating what she asked for and then asking for something else, my 5 YO GD does that. It took me a minute to realize it also, but ever since I have, I don't let her get away with it. Of course, she is much older than your LO, but if my GD asks for something and doesn't finish it, okay. I don't make them clean their plate because I think that might start an over-eating issue later. They only have to eat until they are satisfied - not full, but satisfied. Then they don't get anything else for at least a couple of hours, depending on what they had before and how much. If she doesn't finish what she has and asks for something else, it's a simple no. You have to wait for the next time it's time to eat. I make her wait a couple of hours and then if it's not a meal time, I'll let her have a healthy snack. She, however, will want only junk so she usually gets nothing. I definitely won't allow a "junk food" snack if they haven't eaten what they asked for previously. So she usually ends up waiting for the next meal and then she really eats because she's hungry!
Your LO is much younger, but it wouldn't hurt to start now to try to break this habit.