Google I/O Google’s Flutter development framework has finally achieved its cross-platform aspirations with a stable release of Linux and macOS support.
Flutter 3.0, announced at Google’s I/O Developer Conference, gives developers a way to write apps for the six major consumer platform targets using the Dart programming language. And that’s not to mention the on-board devices.
“With Flutter 2.0 we provided web support, and just recently we provided support for Windows,” said Tim Sneath, director of product and user experience for Flutter and Dart, in an interview with The register.
“And now, with Flutter 3.0, we have finally reached the point where we have completed this journey. We have all six major platforms – iOS, Android, Web, Windows, macOS, Linux – all supported as parts stables of the Flutter framework.”
For macOS, this means support for Intel and Apple Silicon, via Universal Binary releases, as well as support for Apple Silicon in development. Thanks to Dart support for Apple Silicon, compilation is faster.
Support for Linux and macOS was previously considered to be in beta and therefore not particularly suitable for production applications.
Now that Google’s Material Design 3 is nearing completion, those looking to create cross-platform user interfaces in the Android idiom can count on an aesthetically cohesive toolkit.
Flutter 3.0 is accompanied by a 2.17 version of Dart, which incorporates new language features that are supposed to reduce boilerplate and facilitate readability.
If you’ve ever seen a “pyramid of fate” Dart code take shape in a Flutter app, this will likely be a welcome improvement.
One of these additions – super parameters, a succinct way to specify that a parameter belongs to a superclass – saved 2,000 lines of code during the merge.
The Dart language update also includes experimental RISC-V support, better linter, and improved documentation.
Google has paired Flutter more tightly with its cloud database service Firebase, so Firebase’s support for Flutter will evolve alongside support for Android and iOS. This should reduce breaking changes and inconsistencies. Additionally, Firebase’s real-time crash reporting service, Crashlytics, offers better support for Flutter through the Flutter Crashlytics plugin.
“23,000 packages” in the Flutter ecosystem
Asked about the relatively small number of packages available to Flutter developers, Sneath said the Flutter community has stepped up to fill the void, individually and at an enterprise level.
“Companies like Microsoft and Amazon are writing plugins, and communities are starting to band together and pool their resources around common packages that others use or want to see,” he said. “We now have over 23,000 packages in the Flutter ecosystem and it’s growing rapidly, both in number and quality of those packages.”
Arguably the most important aspect of 3.0 is Google’s decision to support casual game development through its Casual Games Toolkit, a selection of templates and best practices, and credits for ads and cloud services. .
Google’s Flutter team has not yet tried to meet the needs of game developers, although efforts in this direction have been made by third parties, notably through the Flame game engine, which reached its 1.0 milestone in last December.
Sneath said Flame was aiming for a more demanding type of game than the Casual Games Toolkit.
“A lot of what we’re trying to offer in the Casual Games Toolkit is complementary to Flame,” he said, highlighting things like integration with Apple’s Game Center or game services. Google Play.
“Game developers might be interested in things like microtransactions or in-app purchases,” Sneath explained. “They might need splash screens and leaderboards and things like that. So a lot of what we’re doing is providing those pieces that are around the core game engine and letting the amazing people of Flame to be able to continue building this core broken game engine.”
To give an idea of the potential of Flutter as a gaming framework, Google has developed a web pinball game Flutter as a demo. It won’t blow you away with super realistic ball physics or blow you away by pushing the limits of browser gaming, but it’s a passable pinball simulation and can serve to convince aspiring indie game developers to use Flutter. to create the next Wordle.
The game might seem odd to Flutter given that its early adopters seem to be large commercial and enterprise app developers who favored cross-platform development as a way to avoid maintaining multiple native codebases.
Sneath suggested that game development and enterprise development share a common concern for performance and user experience and that the Flutter team’s continued efforts to iron out pain points like the jank interface ultimately improve the framework. for any type of application.
“The changes we’ve made to Flutter aren’t specific to game development, but we’ve continued to work on performance and maximize the tools developers have to track performance issues whether they’re in their code. or they’re having, you know, trouble somewhere else,” he said. “We continue to work on those things that make every app better, whether it’s a game or a traditional app.”
Sneath said there are now more than 500,000 apps created using Flutter, double the number available at Google I/O last year.
He named Chinese tech company ByteDance as a major user of the development framework, estimating that it has around 80 Flutter-based apps. The company released a YouTube testimonial last month about its adoption of Flutter.
“They’re really driving this cross-platform story,” Sneath said. “They’re able to unify their skills. They’re able to unify their development, their infrastructure, and their model and reach all these different platforms.”
“Not oversold”, say Sonos developers
Cross-platform development has always involved trade-offs and is not suitable for all applications. While Apple, eager to charge developers to write platform-native code that takes advantage of hardware innovations, has decried cross-platform frameworks like Adobe Flash for producing lowest-common-denominator apps, the pros and cons of using a framework like Flutter on native platform code tends to be more subtle and not always obvious until the end of the application.
Sonos, for example, uses Flutter for its iOS and Android apps and last week wrote a summary of its experience.
The Sonos development team considered developing their apps in native code, in React (a popular front-end web framework) and in Flutter, eventually settling on Google’s open-source framework.
“We were won over by Flutter’s visuals, and can happily attest that we weren’t oversold at all,” wrote senior software engineers Patrick Celentano and Shih-Chang Hsiung.
“Implementing our designers’ vision was finally possible – and on several occasions the developers were able to suggest solutions that the designers would not have imagined possible. Flutter’s API is well-designed and its widget hierarchy solid.”
The Sonos developers are careful to note that Flutter has some shortcomings. They found it difficult to integrate Flutter into their app’s unique build process and noted that while the build performance of the release was respectable – something Google engineers worked on – the debug mode s turned out to be slow during development and the framework lacked some desired features and had unwanted bugs.
“While the Flutter framework is by no means perfect, it’s no exaggeration to say that it unlocked a degree of ‘premium’ unlike anything our team had delivered before,” said the two software engineers. from Sonos. “Most important to our designers, the ease with which new user interfaces can be created means our team spends less time saying ‘no’ to specs and more time iterating on them.” ®