As shown in the picture below, I just received a question from Zhihu today, and I have just seen this video on Douyin. It has a lot of views. It was “laughed off” originally, but since it is so “fate”, it is about “Will Flutter kill the original development?” Let’s talk about my opinion on this question.

I started to become interested in flutter in 2017 and have written more than 20 articles about flutter so far. Several open source flutter projects on Github have about 14K star value. Flutter is now one of my essential work. So I want to say that this is very partial and very radical and very eye-catching.

Before we get to that, let’s talk about what a flutter is.

Flutter is Google’s open source cross-platform UI framework that supports Android and iOS. Flutter currently supports the Web and MacOS, and will support Windows and Linux in the future.

Different from previous cross-platform development: Because of its cross-platform implementation mechanism, which is more like a game engine, flutter gained momentum after accumulation in 2019. Today, flutter’s star on Github has surpassed that of its predecessor, React-Native. Issue also goes beyond React-native.

So to sum up: Flutter is great, but flutter positioning is only a cross-platform UI framework, and flutter’s current issue is touching.

About Flutter “Killing native development issues”

This problem actually dates back to the time when cross-platform frameworks such as React-Native and WEEX were introduced. There was a lot of “cool” talk about native development. But the reality is that React-Native, WeeX and Flutter are UI frameworks. It solves in fact is on the cross-platform UI implementation, so that the interface layout or implementation of the business logic can be unified in multiple ends.

However, it is only a UI framework. For example, React-Native itself relies on native controls, while the Webview and MapView of Flutter also need to be supported by native development.

In addition to the UI framework, bluetooth, data storage, sensors, communication between applications, multi-process, etc., a lot of support is actually native to the platform. All of this needs to be developed on Flutter and then packaged into the Flutter plugin.

Some people may think that all these are provided by officials and third parties. However, first of all, the plugin community for Flutter is still relatively young. Of course, it may not matter when the project is small, but as long as the project is relatively large, these will never be enough.

If he can do all the work on iOS, Android, and Flutter all by himself, as the screenshots say, and be the IP man of programming, I have nothing to say…

As for the issue of flutter, I feel sorry for it. In addition, the PR issue of flutter with 8000+ has not Closed, so I feel sorry for the flutter official for one second. There are always problems with cross-platform frameworks, because there are more platforms involved, and many of the problems are related to the original platform, and developers without corresponding platforms often don’t know what the problems are.

Mixed development is also a consideration, because many companies do not start from scratch. They usually do mixed development on the basis of existing projects, and transform some businesses into FLUTTER to try new technologies. At the same time, dACHang will not put eggs in the same cage, so most of the time, it will be more mixed development mode for dachang.

Finally, there is packaging and distribution. “Packaging failed and audit failed” is the most common stage where problems occur, especially on iOS platforms, which often require people who have experience with the platform.

So the position of Flutter, and even cross-platform development, is not to kill native development, but to expand skills and capabilities on native development. The only thing that can kill platforms is platforms!

About the real position of Flutter

Finally, flutter is a cross-platform UI framework. Like many cross-platform frameworks, Flutter is complementary to native. I have expressed this point more than once in my technical shares and articles.

1. Development costs

Can I directly learn Java/Kotlin, Object-C/Swift, JavaScript/CSS to write the code of each platform?

Of course, such performance is the most guaranteed, but the main advantage of cross-platform is the reuse of code logic, reducing the development cost of the same logic for different platforms. It is ideal and safest for an enterprise to have a set of business logic that can be used in multiple places.

2. Learning opportunities

In general, developers of each platform tend to be limited to their own domain, and as an application developer, cross-platform is a transitional opportunity to reach out to another platform or domain.

3. Team structure

Generally speaking, cross-platform teams will still have native Android and iOS development, even in large and medium-sized projects, but using cross-platform will allow everyone to participate in the same development schedule, rather than iOS and Android doing their own work, which will cause problems in the end.

Every time a new technical framework appears, there are some people who are enthusiastic about it, but also some people who resist it. I hope everyone can keep an objective attitude towards change

Resources to recommend

Open Source Flutter complete project: github.com/CarGuo/GSYG…

Open Source Flutter Multi-case learning project: github.com/CarGuo/GSYF…

Open source Fluttre combat ebook project: github.com/CarGuo/GSYF…