The situation for mobile development has been painful. The two major platforms don’t support any common conventional programming language. Mind you, this is an improvement from several years ago when it seemed there were four platforms, again with no common language. BlackBerry OS 10 and Windows Mobile have since fallen off the bottom. Even so, to get the best results you have to build your application twice, once for Android and again for iOS. Common sense says that that is once too many! Fortunately, Google’s Flutter package lets you make good-looking mobile apps from a single codebase!
Naturally, clever programmers have devised “cross platform” solutions to this problem. The two main approaches are to try to make a web site look like a mobile application, and to make a programming environment that lets you generate an application for two (or more) platforms from one code base. Note: to package apps for the iOS market you pretty much have to develop on a Mac, or use a “build farm” that will do this for you.
In the compiled language area, there are many frameworks as well. One well-known example is Xamarin, which was built by a small company (Ximian) and acquired by Microsoft. This uses the compiled C# programming language to write core application logic. It supports Windows and Mac development IDEs (on Windows it uses Visual Studio).
Unlike many other frameworks, Flutter doesn’t need two different languages to build an app. Android, for example, requires the use of both Java (or Kotlin) and XML. Java/Kotlin are used for the executable code, and XML for many descriptive functions such as the layout of visual components. Flutter uses Dart for everything. This means that there isn’t a graphical UI builder (yet; some steps have been taken towards one). The UI language (“widget set”) is simple enough that any practicing developer should find it easy to build powerful layouts easily.
Android developers who’ve just learned the Kotlin language may not be excited by yet another language.. Kotlin is another modern language, from a different team at Google. Maybe both “alternate” languages were prompted by Oracle’s massive lawsuit over Google’s use of Java in Android. One expects Google to move away from Java as a result of this suit. The lawyers proved that Java is only “open” as far as Oracle wants it to be, and no further. That aside, Dart is similar enough to Kotlin that it will be recognizable to Kotlin devs, with a few traps. There are several good comparisons online; start here.
There will probably never be one single toolkit that everybody agrees to use for mobile development. But I think Flutter is going to become one of the dominant frameworks for mobile and app development. I encourage mobile developers to look at it, and try writing a real application or two with Flutter.