The iOS platform is growing fast

Flutter: beautiful and fast apps for Android and iOS

The Flutter development promises beautiful apps. These are also extremely fast. We wanted to see it for ourselves. As a test, we wrote our first Flutter app. In this article we summarize what we noticed.

Flutter: alternative to native development

Apps have been developed natively for years. There were hardly any alternatives. The official interfaces and tools of Android and iOS were used. This gives the developer full control over the system. The result is high quality apps with high performance. If you want to develop apps for more than one platform, you still have to make compromises.

Separate development is time-consuming and costly. A separate developer is required for each platform. In recent years, many companies have tried to change this fact. Among other things, Facebook developed React Native and Microsoft Xamarin. The promise of these frameworks is similar: One code base for all systems. In the meantime, Google has also entered this race with Flutter.

What is Flutter anyway?

Flutter has been developed by Google since 2015. This means that mobile apps for Android and iOS can be developed quickly. The framework is open source. Flutter is also the basis for fuchsia. Fuchsia is the new operating system from Google. It should replace Android in the future. In the meantime, apps from Alibaba, Groupon, Tencent and of course Google itself are running with Flutter. Many of these apps are used by millions of users every day.

In addition, a large community has formed around the project. The ECO system around the framework is also constantly growing. This means that new plugins or services are published every day. There are a number of ready-made integrations for different cloud services. Flutter interacts excellently with Google's internal service Firebase in particular. Providers such as Codemagic offer continuous integration and deployment especially for Flutter Apps.

The programming language in the background is darts. Darts is also developed by Google. The language is a mixture of C # and Java. Google has combined the most important principles from the various languages. So if you have experience in these areas, it is easier to get started.

The method is very reminiscent of reactive programming. Usually this also helps web developers find their way around quickly. In addition, the documentation for darts and flutter is very successful. The in-house YouTube channel rounds off this experience. There you can find tutorials almost every day.

Cross platform development for Android, iOS and Co

The development with Flutter is suitable for different platforms. The focus is of course on Android and iOS. Apps are divided into so-called widgets. These are comparable to the components and services from React Native or Ionic. In Flutter, every element is a widget. No matter if button, search field or the entire app. The logic and the data flow can be compared with a tree structure. Changes or events are forwarded to the child elements.

Flutter Development: Gorgeous Design for Android and iOS

Out of the box, Flutter offers a number of ready-made widgets. In addition, the integration of Google's material design is excellent. The Cupertino package also offers iOS-specific elements and styles. Initially, it takes some training time. Choosing the right widget is not easy, especially at the beginning.

But once you have an overview and understand the individual applications, the possibilities seem endless. The great thing about the framework is that it is relatively easy to create your own widgets. Existing widgets can be combined in any way to create new widgets.

High performance thanks to the rendering engine

In contrast to React Native or Xamarin, the framework does not use the native UI components. Flutter draws the content directly on the screen. This approach is similar to a gaming engine. The Flutter team has reproduced all the important components down to the last detail. As a normal user, you hardly notice any difference. This brings an important advantage compared to the competition. The performance is excellent and the animations run extremely smoothly.

Flutter development with Hot Reload

During development, we learned to love one feature in particular. Similar to React Native, Flutter supports hot reloading. If an Android or iOS developer wants to change the size of a text at the moment, a new build must be initiated. That costs time and nerves. Depending on the size of the application, this can even take several minutes. The hot reload makes changes visible directly on the device. For example, if you change the color of an element, it will be redrawn immediately. This speeds up the build of an app enormously. Different designs can be tested in a very short time.

Flutter development: Changes are visible directly on the device via hot reload

Flutter's weaknesses

Of course, not all that glitters is gold. We also struggled with problems when developing the Karl app (available for Android and iOS). On iOS there were always problems with updating different plugins. Flutter is still at a very early stage. Updates are published continuously.

It is therefore advisable to set the plugins to a fixed version in the configuration. Otherwise, Flutter will update them automatically. This leads to compatibility problems very quickly. In some cases, only a manual downgrade to an older version will help.

Nonetheless, we had a lot of fun developing with Flutter. In comparison to previous solutions, the performance is particularly noteworthy. We were also impressed by the hot reload function. This makes writing an app feel like developing on the web. Changes are visible directly on the smartphone. Everything is just a little quicker.

Google also keeps the promise of “design beautiful apps”. It takes some time to get used to it. As soon as you understand the correct use of the UI elements, you can let off steam in the design of the app.

Future: Flutter for the web

We are also positive about the future of Flutter. On the one hand, technical optimizations are on the roadmap. On the other hand, the team wants to support other platforms. Dart transpils very well into JavaScript code. The ideal basis for web apps.

The Hummingbird project is therefore intended to make Flutter fit for the browser. The desktop should also be conquered. First experiments on MacOS and Windows as well as on Raspberry Pi devices were a success. So we can be curious whether Flutter will prevail in cross platform development.