I am not sure if you guys even remotely has my problem.

LO is 3.5 years old. He has never been known to be a great eater since he was a baby . He tends to play and not finish his meal at mealtime. And then he'd complain he's hungry and ask for snack afterwards.

We have our dinner time at around 6pm. Over the weekdays (when we have dinner at home), I would insist he finish everything on his plate before he can go, which would take more than an hour. During weekends when we eat out, since we don't have more than an hour to sit around, he knows that we won't make him finish his food. Say if we order from the kid's menu, he would eat maybe 10-40% of what's on his plate. We have our bedtime at around 8:30pm-9pm. However, almost every night at 9:30pm, he would get up and complain to us that he is hungry. We would tell him, well, since you choose not to finish your dinner, that was your choice, and you'll just have to go to sleep hungry now. Can you make a better choice and finish your dinner tomorrow night? He's say yes.

HOWEVER. This has been happening almost every night now, for the past I don't know how long.

Honestly, if he is growing well like everyone else, I wouldn't even care. However, he is now probably one of the shortest and skinniest boy in his class. He is now shorter than his friend, who is about 6 days older than him, by 1/3 or 1/2 of his head. There are boys in his class that are at least a few inches taller than him. I just feel so bad and I felt maybe I should give him a snack or something, but I also don't want to create bad behavior and let him think if he didn't eat his dinner, he will get snacks at night anyway.

Honestly, he is quite a smart boy and he learns a lot of things. I am not quite sure how he doesn't learn that if he doesn't eat your dinner until he is full, he is not going to get extra snack after dinner time even though he's hungry?

Did you ever experience that? What would you do?