Flutter 1.0: Google's cross-platform UI toolkit

Google releases Flutter 1.0 with Dart widgets compiled to native ARM code, Skia rendering engine, hot reload and an approach that redraws every pixel without native components.

Open SourceWeb Open SourceFlutterDartMobileUICross-PlatformGoogle

A different approach to cross-platform

Cross-platform mobile development in 2018 is split between two schools: frameworks that use WebView (Cordova, Ionic) — essentially packaged web applications — and those that map JavaScript components to native operating system widgets, such as React Native. The first approach sacrifices performance, the second must manage differences between native iOS and Android components, with sometimes unpredictable results.

Flutter 1.0, released by Google, chooses a third path: it does not use native operating system components and does not run code in a WebView. Flutter draws every pixel directly on the screen using its own rendering engine, Skia. The interface is identical on every platform not because it adapts to native components, but because it does not use them at all.

Dart and native compilation

Flutter uses Dart, a language developed by Google, which compiles to native ARM code. The choice of Dart — a language far less popular than JavaScript — is motivated by technical reasons: Dart supports both AOT (Ahead-of-Time) compilation for production performance and JIT (Just-in-Time) compilation during development, enabling hot reload — the ability to see code changes reflected in the running application in less than a second, without losing state.

Native compilation eliminates the bridge between JavaScript and native code that in React Native can become a bottleneck for animations and complex interactions.

Widgets and composition

The fundamental unit of Flutter is the widget: an immutable object that describes a portion of the interface. Every visible element — buttons, text, padding, layout, animations — is a widget. Widgets compose through nesting: a Center contains a Column that contains a Text and a RaisedButton. The entire interface tree is declarative: the developer describes how the UI should look for a given state, and Flutter calculates the differences and updates only the changed widgets.

Flutter includes two libraries of predefined widgets: Material Design for Android aesthetics and Cupertino for iOS, but both are proprietary implementations, not wrappers around native components.

Predictable performance

The Skia engine renders at 60 fps (or 120 fps on compatible devices) with a separate UI thread and rendering thread. Performance is more predictable compared to bridge-based frameworks, because there is no serialisation between different languages. Flutter is released under the BSD licence.

Link: flutter.dev

Need support? Under attack? Service Status
Need support? Under attack? Service Status