Flutter – the new kid on the block

Hello dear reader!

We are back again here, and this is one is a big one. As you know, I have always defended the virtues of native development, and how hybrid development strategies always feel rained in. Google has lately been talking a lot about Flutter, and according to them, and I quote:

What is Flutter?

Flutter is Google’s mobile app SDK for crafting high-quality native experiences on iOS and Android in record time. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source.

What does Flutter do?

For users, Flutter makes beautiful app UIs come to life.

For developers, Flutter lowers the bar to entry for building mobile apps. It speeds up development of mobile apps and reduces the cost and complexity of app production across iOS and Android.

For designers, Flutter helps deliver the original design vision, without loss of fidelity or compromises. It also acts as a productive prototyping tool.

Who is Flutter for?

Flutter is for developers that want a faster way to build beautiful mobile apps, or a way to reach more users with a single investment.

Flutter is also for engineering managers that need to lead mobile development teams. Flutter allows eng managers to create a single mobile app dev team, unifying their development investments to ship more features faster, ship the same feature set to iOS and Android at the same time, and lower maintenance costs.

While not the initial target audience, Flutter is also for designers that want their original design visions delivered consistently, with high fidelity, to all users on mobile.

Fundamentally, Flutter is for users that want beautiful apps, with delightful motion and animation, and UIs with character and an identity all their own.

How experienced of a programmer/developer do I have to be to use Flutter?

Flutter is approachable to programmers familiar with object-oriented concepts (classes, methods, variables, etc) and imperative programming concepts (loops, conditionals, etc).

No prior mobile experience is required in order to learn and use Flutter.

We have seen people with very little programming experience learn and use Flutter for prototyping and app development.

What kinds of apps can I build with Flutter?

Flutter is optimized for 2D mobile apps that want to run on both Android and iOS.

Apps that need to deliver brand-first designs are particularly well suited for Flutter. However, apps that need to look like stock platform apps can also be built with Flutter.

You can build full-featured apps with Flutter, including camera, geolocation, network, storage, 3rd-party SDKs, and more.

Who makes Flutter?

Flutter is an open source project, with contributions from Google and the community.

Who uses Flutter?

Developers inside and outside of Google use Flutter to build beautiful native apps for iOS and Android. To learn about some of these apps, visit the showcase.

What makes Flutter unique?

Flutter is different than most other options for building mobile apps because Flutter uses neither WebView nor the OEM widgets that shipped with the device. Instead, Flutter uses its own high-performance rendering engine to draw widgets.

In addition, Flutter is different because it only has a thin layer of C/C++ code. Flutter implements most of its system (compositing, gestures, animation, framework, widgets, etc) in Dart (a modern, concise, object-oriented language) that developers can easily approach read, change, replace, or remove. This gives developers tremendous control over the system, as well as significantly lowers the bar to approachability for the majority of the system.

Should I build my next production app with Flutter?

Flutter 1.0 was launched on Dec 4th, 2018. Thousands of apps have shipped with Flutter to hundreds of millions of devices. See some sample apps in the showcase.

For more information on the launch and subsequent releases, see Flutter 1.0: Google’s Portable UI Toolkit.

They even made some cool graphs about how fast, native and quick Flutter is.

Flutter caracs

The idea behind Flutter is that it is based on Widgets, everything you add is basically a widget which contains other widgets. For instance a screen is a widget, which then may contain a button ,which is another widget, and an image, which is yet another widget.

This makes it extremely fast and easy to build beautiful interfaces by using the premade widgets. For instance, check out the beautiful material design widgets.

Widgets

This is then compiled to Native code and deployed easily on an iOS device or on Android. I’ve been testing out Flutter and plan to release a few Apps using it, as this is the first hybrid system that does not rely heavily on web frameworks.

In fact, Flutter is built with C, C++, Dart, and Skia (a 2D rendering engine). You can check out the architecture diagram below.

Flutter arch

I’ll be writing a post very soon showcasing what I like and dislike about this new system, so stay tuned so you don’t miss it.

Drop me a line in the comments? What do you think about Flutter and hybrid app development?

Until next time!