Forewords

This news report on Flutter is just a gathering of links and information about what happened this January. You may find lots of links on Twitter, Reddit, and newsletters, my first sources of information. This is just a way for me to stay up-to-date on Flutter technology, by browsing and reading things about it.

This is the first publication, like a proof of concept for me :) As it is not perfect and I need to improve it, I will gladly appreciate to get some feedbacks on it.

News and events

Flutter plugin version 21

The Flutter plugin has been updated to version 21.

It comes with the first version of Flutter Inspector, which adds widget tree visualisation, widget selection between tree and UI, and properties display. There are some improvements with app launch and run, like a message when reloading was successful, some more hyperlinks in console to restart and access files more easily.

DartConf 2018

DartConf 2018 took place on January 23-24. You can find their dedicated open source Flutter app.

You can watch it now on the dedicated Youtube playlist, or if you prefer to watch the live version, you’ve got Day 1 live recording and Day 2 live recording.

Keynote by Tim Sneath

Tim started with quick presentation of Flutter, no surprise here.

He spoke about Dart and why they used it: hot reload, native compilation, language optimisation, open source, ECMA standard. They also officially announced Dart 2 with its strong mode type inference, optional new and const keywords, common behaviours and error messages on all platforms.

We had a presentation of the Hookle application, which was built using Flutter. They choose Flutter to accelerate and ease development on iOS and Android.

Then, some numbers about Flutter, Dart and contributions. In one sentence: Flutter community is impressive.

Evolving Dart: Leaving the ocean and learn to fly by Leaf Petersen

A Dart history: past, now, future. At the beginning, Dart was design to be a great JIT language to replace the flawy JavaScript in the browser. Then they adapted the language by creating Strong Mode. Then, came AOT with Flutter and the new version, Dart 2.

To extends the language to Dart 2, main challenge was to make a static typing system, who is both developer-friendly and as easy to use as the dynamic typing of Dart 1. Core libraries and tools have been updated to work with Dart 2.

In the future, Dart will include 64-bits integers, optional new and const keywords. They would like to introduce Generic constructors, smarter type promotion, support for language and library evolution, ease between typed and untyped code, and non-nullable types.

Let’s Live code in Flutter by Emily Fortuna & Matt Sullivan

Emily and Matt are live coding from scratch (with Visual Studio Code, not Android Studio) a Flutter app which finds restaurants around you. Sources are hosted on the nomnom github repository.

Flutter & Web: Unite your code and your team by Matthew Smith and John Ryan

AppTree needed to build an app for Android, iOS, and Web. As their Web version was already written in Dart, they tried to move their mobile native application to Flutter, sharing as much Dart code as possible between Flutter and Web.

Their strategy use layers, with abstract views and services to handle platform specific operations. They are using View-Controller-Service layers. Views are simple and only know rendering and user inputs, controllers handle app’s logic, and services are accessing to external data, like JSON or HTTP requests. They are using dependencies injection to avoid coupling to ease layer swapping between platforms.

Making Dart fast on mobile by Vyacheslav Egorov

Actually, modified title is Making Dart fast everywhere where Dart VM runs, you are warned. As Flutter uses Dart VM, we are fine.

Dart performances vary between Debug and Release mode. Vyacheslav explains how to monitor performances, and what Dart 2 brings to AOT performances.

SPOILER: There is a second part on Dart VM garbage collection and memory.

How to build good packages and plugins by Kevin Moore

Kevin gives advices on writing, publishing and maintaining great Dart packages and plugins. He goes through coding styles, versioning, files needed to publish and how to maintain your package.

Flutter Inspector by Jacob Richman & Phil Quitslun

Discover the brand new Flutter Inspector, with its widget inspection, widget tree and property visualiser, and how it could help you to develop faster.

Keep it Simple, State: Architecture for Flutter Apps by Brian Egan

States in Flutter are not that easy to use : StatefulWidget is great, but it can be hard to maintain. InheritedWidgets can solve a part of this, but it is not that optimised. Setting up tests can be hard with in some cases, too.

A solution is to use layers :

  • Data layer : retrieve and parse data.

  • Domain layer : up-to-you to choose your preferred solution. In this talk, we are looking to Redux. This is way more easier to test.

  • UI layer : widgets, using flutter_redux in this video to optimise the rendering process with StoreConnector.

Effective Dart + IntelliJ by Alexander Doroshko & &Jaime Wren

It starts with how to be faster with IntelliJ using shortcuts. Then, there is an overview the IntelliJ’s Flutter/Dart interface usage to be more effective.

From Zero to One: Building a real world Flutter Application by Faisal Abid

Faisal built Ven Chat, an app for singles, using Flutter in 5 days, working 2 hours a day. He used :

  • Websockets to connect app to the server.

  • InheritedWidget to handle app’s state.

  • jaguar_serializer plugin to serialize JSON.

  • GestureRecongnizer to handle user interactions combined with Dialog to interact with user.

  • Fluro to handle routes.

  • flutter_image to ease image loading from network.

  • async_loader to load data asynchronously and show a spinning animation.

Flutter/Angular code sharing deep dive by Paolo Soares

Paolo managed to share code between a Flutter and AngularDart. He went up to 50% sharing. In this talk, you can learn that those two frameworks are great, but not that easily compatible if you already have an existing AngularDart app. You’ll learn how to share code with some live coding, and some guidelines.

It’s bigger on the inside: Mind-bending scrolling in Flutter by Vyacheslav Egorov

Flutter’s scrolling is built on top of a lot of things. You will get here an overview: views, controllers, physics…​ That’s definitively a big thing. In this talk, you will discover how to use and create scrolling views, from simple to custom widgets.

Flutter lets you do whatever you want with scrolling, that’s huge.

Some resources to discover and learn Flutter

Some package releases

  • camera v0.0.2. A Flutter plugin for iOS and Android allowing access to the device cameras, by the Flutter team.

  • flutter_billing v0.1.0. Flutter plugin to enable billing on iOS and Android, by Volodymyr Lykhonis.

  • proxymity_plugin v0.0.1. A flutter dart plugin to access the device’s proximity sensor, by ManojNB.

  • lamp plugin v0.0.1. Handle your device’s lamp, by Clovis Nicolas.

  • screen plugin v0.0.2. Manage the device’s screen on Android and iOS, by Clovis Nicolas.

  • vibrate plugin v0.0.1. Use device vibration, by Clovis Nicolas.

Conclusion

With DartConf, the Flutter community seemed to be boosted and posted a lot of interesting stuff. Personally, I enjoyed reading all of this, and learned a lot. A big thank you to all those wonderful people who are creating are sharing great content.

I hope you enjoyed this first publication of What’s up Flutter. If I forgot something, made some mistakes, or if you want to appear in next What’s up Flutter publications, just let me know on my Twitter.

Cover image by Maxime Le Conte Des Floris