Google's Flutter is about to be released as a Version 1 product, ready for you to use. The question is if you be considering a way to create nearly native programs that run on iOS or Android? I suppose it depends upon what "almost native" means?
Flutter is a strange project for Google to encourage. It's intended to permit the creation of apps that work on both iOS or Android. As Google only actually has an interest in getting one to write Android apps, it is difficult to find out exactly what the motivation is to help Apple out with accessing programs.
The whole thing appears to be inspired by a desire to generate the Dart language more practical. Dart was going to be Google's JavaScript replacement, but it didn't get the external support it had so it was quietly sidelined. Then, at the start of the calendar year, it seemed to spring back into life using Flutter, a cross-platform app development framework using Dart because of its own language.
Now, about six months after, we have a release trailer, which must be something similar to a release candidate. There is also an official blog post talking up the project. It mentions a 50% increase in active Flutter consumers, entering the top 100 repos on GitHub and lots of user groups, events, and meetings. More importantly, some Flutter-based apps are emerging from the App Store and Play. While all this is great, it's still hard to know if Flutter has got a chance of taking off. An increase in interest isn't necessarily the exact same thing as a whole lot of interest.
The actual question is why would you choose Flutter?
The options are to create a native app or build a web program. The issue with native programs is that they are more difficult to make and you want at least twice, not that similar, implementations. Web apps are progressing in the feeling of Progressive Apps, however, nevertheless, they have their own problems. If you are prepared to take a non-standards-based strategy then Flutter could be for you personally. It is an alternative to strategies like PhoneGap/Cordova. Where PhoneGap/Cordova packs a standard HTML/JavaScript app in an extended browser to make something which resembles a native program, Flutter wraps a custom UI SDK/Dart in a C++ wrapper. Other obvious Flutter alternatives are React Native and Xamarin.
Developing with Flutter looks fairly simple. You can even utilize Android Studio using an add-in or an alternate IDE. The majority of Flutter is concerned with making a UI in code. You can create something that looks good on Android or iOS. As soon as you get beyond the UI, things get a bit more tricky. There's an interop module that gives ways of calling the native API from Dart. On the Dart side this works in a platform-independent way, however, the price is that you have to supply the native implementation of the function.
That means that you may more-or-less invent your platform execution of the native APIs. This isn't that hard, but it could be much better if Flutter provided a standard regularization of this iOS along with Android APIs - however, this would be a massive project. More realistic would be a heart implementation of the API calls that are most used.
Because of this native API interop, I'm not sure that you could build apps that are as sophisticated as full native programs - how can you utilize Android Fragments, for example? It appears to me the perfect Flutter program is one that is largely UI with a few native API calls to provide information. Surely, before committing to a Flutter program development undertaking, you need to be certain that you understand the way the interop works and make certain that to have both Android and iOS expertise to implement the native elements of the project.
Flutter is going to be published and we've got still another method to create programs. It will be interesting to observe how high it might go.