This week myself and the Android team at xDesign had the opportunity to attend Flutter Live at The Science Museum in London. Google announce the release of Flutter 1.0, it’s new cross platform coding engine which enable developers to develop and deploy apps across multiple platforms including iOS and Android (and eventually even web).
Itv was a great event to attend and what really struck us was the excitement of the developers that were in attendance. Before and after the Keynote we had the opportunity to speak to other developers who had been using and testing Flutter in their production apps and displayed a genuine sense of excitement of the possibilities of the Flutter platform.
Here’s a rundown of our teams thoughts of the platform, it’s benefits and how we at xDesign can use Flutter moving into 2019.
What Is Flutter?
Flutter, created by Google, is an open source cross-platform app building toolkit which allows developers to share a single codebase between Android and iOS apps. By creating native ARM code, Google claims that Flutter enables the flexibility of cross-platform development with compromising on quality or performance.
Flutter isn’t the first cross-platform mobile framework to come along. A number of other software development kits (SDK’s), perhaps most notably the Facebook owned React-Native and Xamarin have been around for a while now. Google claims that these other solutions “typically involve a compromise” and that if your goal is get nail both native and cross platform app development then Flutter is the way to go.
There was a big focus on design and making it easy to design beautiful user interfaces (UI). This was encouraging to see as at xDesign we have creative designers but sometimes when trying to implement this natively you are forced to rely on strange workarounds or it is time prohibitive to get the exact design you want. The goal of flutter is to enable beautiful design without compromises. Since Flutter is a cross platform framework it also means you need to build these UIs just once instead of separately for iOS and Android.
Power of Widgets
Flutter takes a different approach to native development but is also different from other cross platform alternatives like React Native and Xamarin. In Flutter the widgets are rendered by Flutter using the Skia graphics library instead of using the underlying platform UI elements. This means that there is more consistency when rendering between platforms since it is not actually calling a different implementation on each platform, it is same code running on both.
By taking a different approach there are also not constraints imposed based on the existing rendering engines on iOS or Android. An example shown during the keynote was an embedded Google Map widget running within a complex animation but still scaling correctly and being interactable. This would be difficult to implement using a native approach and makes us really excited about what Flutter's widget approach can let us accomplish.
Speed of Development
This is a point more targeted at developers but it has a big benefit for our clients too. Flutter, similar to React Native, allows for hot stateful reloading so that a change can be made in the code and then rapidly viewed on an emulator or device without requiring a lengthy rebuild. This means we can iterate faster and have less time when working on ideas. It'll also be great for working closely with our designers as we can change things as required working side by side without lengthy delays.
The big reveal at the end of the end of the presentation focused on Google's attempt to get Flutter code working on the web. It's not ready for them to release the code yet but the idea of having a single code base that can support mobile and web without having strange rendering bugs between the platforms is really appealing. There is already work underway to let Flutter run on Mac and Windows and they demonstrated how this works in the keynote as all the beautiful slides used were actually powered by Flutter.
Team Thoughts and Questions
Design was a big focus of the keynote and there is no doubt that we were very impressed by what could be visually accomplished. An area that wasn't addressed is how Flutter will work for more data heavy apps. We do some complex projects requiring sync logic and solid offline capabilities and although this is possible in Flutter the tooling and libraries in this area aren't quite there yet and it doesn't seem to be the main focus at the moment. It looks like Flutter will be great for UI focused applications but for those with complex offline logic we'll need to wait and see
Also, the ecosystem is a problem for all new platforms but since Flutter has just hit 1.0 there is not the same tooling and libraries available as there is for native development. If Flutter is adopted widely this will improve but for now it means that more custom development work may be required to achieve behaviour that we would previously use a library for in native development.
Flutter In Practice at xDesign
As our annual hack week approaches, we are going to challenge ourselves and the team to create some complex UI's in Flutter to see how it easy it really is in practice. If we think it's the way to go, there's a strong possibility we will consider it for future client projects. Keep your eyes peeled to find out how we get on with it in our hack week in December!
If you would like to watch the full Flutter Live 2018 Launch you can do so here