I am new to Flutter and dart language. After developing some example apps seeing from the tutorial I have come to know that the simple Tab-Layout App is taking 7MB for APK after
Installed App has something like the DOUBLE in space of the standard APK, this is cause by how Android "installs" all Apps. If you open a folder in "/data/app/..." you can see that for each PackageName/App it is stored the standard APK file (the one you release) and there are at least two folders: for libraries and one for optimized code (not accessible/readable from us without Root). These folders contain other extracted and optimized files starting from your APK.
Flutter Apps cannot be smaller than 6-7Mb because it brings all Flutter Core inside them. To "shrink" your App you can follow common rules to shrink any normal Native App.
The best approach? All depends on your skill, how much available time you have to complete the App, how much times the Customer change his minds about the position of some graphic interface, etc... Flutter main website page has written "Flutter is Google’s mobile app SDK for crafting high-quality native interfaces" so the main purpose of it is to quickly create Interfaces. This is good when a Customer interrupts our work every 10 minutes because he wants to change something in the graphic aspect and we cannot manually change many XML and then rebuild a version each time, so Flutter could improve this step a lot. Flutter is even good at initial stage when we are not sure where we will set components/widgets at final stage, so we can move all the stuff in few seconds to check the graphical result. Performance of Flutter Apps are quite good, but not good as a Native App obrliviously. Using Flutter could be the good way when you already know that the final APK will be bigger than 25MB, because in this case 25MB or 25+7MB is not that's difference but the speed (in GUI development) provided from Flutter are something not estimable.