I wouldn't worry about this honestly. It is a very typical toddler diet and a normal fussy phase. Fruit makes a good snack, you can also do cut up carrot sticks/cucumber/peppers with his lunch.
I would def try to offer some veg alongside even a beige dinner (we all have those days) whether it gets eaten or not at least you've offered it.
If he will eat "sauce" type meals like mild chicken curry + rice, or pasta with tomato sauce, spaghetti bolognese, you can hide some veg in these sauces - grated carrot cooks in and becomes invisible, tomatoes of course, courgette/mushroom can also be cut very small or just blend the sauce smooth after cooking these things in before adding the meat etc.
Don't ask him what he wants to eat, just present the meal as a done thing. You can alternate his favourites with things that are not so loved.
Do you eat all together? That can help. For example my 5yo is quite picky about sauce type things so we will sometimes have spaghetti bolognese and he literally just has a plate of spaghetti with cheese on top. However recently because he's seen DH and I eat the sauce and enjoy it, he has asked to try a bit, and now he has a lot of spaghetti with a tiny bit of sauce and some cheese, this will likely increase over time.
Also if it's always dinner time that is a problem, could you be eating too late so he's tired? I find an earlier dinner is helpful (it does make it harder to eat together) because they are more adventurous when they aren't tired, and then we do a little top up "supper" of something like fruit, yoghurt, bread, crackers, cheese, porridge etc (anything they already like) before bed.