At Flutter Interact today, Google laid out its ambient computing vision for Flutter, which lets developers build embedded, mobile, desktop, and web apps from the same codebase. Developers should be able to use Flutter on all sorts of devices, including phones, wearables, tablets, desktops, laptops, televisions, and smart displays. Google calls this ambient computing — the idea that your services and software are available wherever you need them. Google wants Flutter to be “a portable toolkit for building beautiful experiences wherever you might want to paint pixels on the screen.”
Flutter was first announced at Google’s I/O developers conference in May 2017 and hit version 1.0 in December 2018. Meant to compete with frameworks like Facebook’s React Native, the library is designed to combine the performance and platform integrations of native mobile with the rapid development and multi-platform reach of portable UI toolkits. Flutter apps are built using Google’s Dart programming language.
Going forward, Flutter is evolving into a tool that delivers a UI experience wherever developers want to build. Google wants developers to start app development not by asking “Which device am I targeting?” but simply “What am I going to build?” That way, anyone can test their ideas across multiple devices and platforms, rather than just one device or platform. That should help startups that are limited by resources and let enterprises consolidate teams into shipping a single experience. In short, being able to reuse code means less work and faster turnarounds.
Flutter 1.12 and Dart 2.7
To this end, Google today released Flutter 1.12 (release notes), which brings performance improvements, more control over adding Flutter content to existing apps, and updates to the Material and Cupertino libraries. For those keeping count, this is the fifth stable release since 1.0 arrived a year ago.
Flutter 1.12 features a visual refresh to support iOS 13. That includes a completed implementation of Dark Mode, new Cupertino widgets (CupertinoContextMenu and CupertinoSlidingSegmentedControl), UX tweaks, and an enhanced Add-to-App experience. Google also improved scrollbar fidelity, provided for adaptive CupertinoAlertDialog padding, and allowed for min/max date constraints on the CupertinoDatePicker.
Next, the team has given Add-to-App, which lets you integrate Flutter into an existing Android or iOS app, a simplified integration flow. There’s even a new Flutter Module wizard in Android Studio. Furthermore, Add-to-App is now officially supported for adding one fullscreen Flutter instance to your app. The team also stabilized the APIs for platform integration in Java, Kotlin, Objective-C, and Swift, including a new set of APIs for Android. You can also expect support for using plugins in embedded Flutter modules. The “flutter attach” mechanism in the command-line tools, Visual Studio Code, and IntelliJ can now easily attach onto a running Flutter module for debugging, DevTools, and hot reload.
The stable release of Flutter aside, web support has hit beta, and macOS support has hit alpha. Developers can thus now build and consume web plugins, as well as building a fully optimized macOS application.