There are cross-platform frameworks like Xamarin, React Native already available in the market to develop iOS and Android apps with a single code base. However, Flutter has entered very strongly in the race of cross-platform mobile app development. Flutter is backed by google and uses Dart programming language which was introduced by Google in 2011 and is rarely used by developers. Dart programming is easy to use and learn. It uses compositions and channels to make it look native. Flutter also has Material Design and Cupertino that allow developers to easily render the UI on both iOS and Android platforms. Flutter was originally known as sky and was only supported for Android.
One of the biggest advantages of using this cross platform app is that you can have a single development team using the common codebase. It means that instead of having separate teams for android and iOS it can be created for both these platforms. Many developers have come across the fact that the learning curve for flutter is shorter 3-5 days the most.
One of the reasons for this fast learning curve is the programming language that Google chose as the backbone for Flutter: Dart. Similar to many modern languages e.g. Kotlin, Swift or JavaScript, Dart works very well for reactive programming. One of the best things about Flutter is the hot reload, which allows developers to almost instantly see results from any changes, in many cases without losing the app’s state. Other things that make flutter the ideal cross platform app is that it isolates the engine from the native UI, Flutter UI widgets help streamline UI development, it makes animations effortless and simplifies phone compatibility.
Like many apps, there are always some drawbacks just like there are for flutter. Not so huge but can always play out differently for different reasons.