Flutter marks the release of its third beta, the toolkit for building beautiful mobile UI for iOS and Android. This release (v0.3.2) is the third release in that lineage, and demonstrates continued progress towards completing the 1.0 release. This release has focused on three primary areas: fundamentals, ecosystem and tooling.
In Flutter Beta 3, a number of improvements have been made to the Material Design widgets to enable greater flexibility and customization. For example:
Additionally, added support for animated resources in formats like GIF and WebP, ready for the best meme apps to be published to the app stores!
A number of updates have been made to the Flutter Gallery application to demonstrate these and other changes. For example:
The work to enable Dart 2 is completed, and the reboot of the Dart language that is optimized for client development. As of this release, Dart 2 is feature complete and enabled by default. In this release, Dart 2 adds some syntactic sugar to help with instantiating widgets in Flutter. The new keyword is now entirely optional: there should be no need to use it any longer, and it’s a bug if the compiler complains. A build() method like this is easier than ever to write:
Widget build(BuildContext context) => Scaffold( appBar: AppBar( title: Text(widget.title), actions: [ IconButton( icon: Icon(Icons.info), onPressed: _aboutAction, ), IconButton( icon: Icon(Icons.share), onPressed: _shareAction, ) ], ), body: Center( child: _body(), ), floatingActionButton: FloatingActionButton( onPressed: _refresh, tooltip: 'Refresh', child: Icon(Icons.refresh), ), );
The const keyword becomes optional for any child constructors within an existing const scope. During the first two betas, it is identified scenarios where it was difficult to infer from the context whether an object’s children are immutable, so it required the const keyword at the top level to make the constant nature of the code explicit. Once you’ve declared a section as const, however, the children are automatically const without requiring further declaration, so now a statement like the following is valid:
const comments = [ Comment( "Creating apps is just faster and more fun with Flutter.", "Posse Inc."), Comment( "Yesterday I was trying #Flutter for the first time, today I published an application.", "@CristianDudca"), Comment( "This weekend: Met and fell in love with Flutter.", "@FIREYOSE"), ];
In other areas, improvements are made to the accessibility support for apps that use Flutter, including improving support for screen readers, large text and contrast capabilities, as well as starting to document our accessibility support. It is also ready for apps that are offered in languages with right-to-left scripts. In addition to supporting right-to-left text, controls mirror where appropriate (for example the left ‘back’ button has inverted direction and justification in languages like Arabic).
The Flutter engine’s threading model is rewritten to make it possible to host multiple FlutterViews within a single application. This is part of the larger focus on making it easier to add Flutter to your existing app — work that continues in progress.
An initial suite of Firebase plugins is launched at Google I/O last year. Several of those plugins are reaching their 1.0 milestone this week: Realtime Database, Firebase Analytics, Firebase Messaging, and Firebase Core. In addition, new and fully-featured plugins are added for Remote Config, Cloud Firestore, and Performance Monitoring.
The support for ads powered by AdMob by Google is graduating to beta, enabling you to monetize your Flutter-based applications. The AdMob plugin supports loading and displaying banner, interstitial (full-screen), and rewarded video ads using the AdMob API.
There are many other packages that have recently been made available for Flutter, some contributed by the Flutter team directly, others by community members. As mentioned in I/O announcement post, Flutter is a first-class toolkit for Material, which means the Material and Flutter teams have partnered to deliver even more support for Material Design.
The UI Inspector is redesigned with a new “Just My Widgets” feature that filters out auto-generated widgets. You can also run your Flutter app in profile mode, which adds frames-per-second and memory usage displays. Visual Studio Code is now considered a fully-supported development environment for Flutter, in addition to the Android Studio support mentioned above. Flutter support is enabled through the Flutter extension, available through the Visual Studio Marketplace.