Google: Dart programming language and Flutter get these big iOS improvements

Flutter now uses Apple's Metal API for iOS GPU access by default, brings faster animations and uses less memory.

Programming languages: What do software developers really like?

Google has released version 2.8 of its popular programming language Dart along with version 1.7 of Flutter, its UI framework for building iOS, Android, Fuchsia, and desktop apps.

The two releases have arrived together after Google announced last month it would align Flutter and Dart release processes and channels. 

According to Google, around 500,000 developers use Flutter each month and there are now 50,000 Flutter-based apps on Google Play, but this update brings a host of benefits for developers building apps for iOS.

SEE: How to build a successful developer career (free PDF)

Flutter 1.17 contains a bunch of fixes and comes ahead of the now-canceled Google I/O conference that was scheduled for next Tuesday. 

Developers using Flutter can gain significant performance and memory improvements in their apps just by upgrading to version 1.17, according to Chris Sells, product manager, Flutter developer experience. 

Sells says this release delivers a 20% to 37% speed-up for the default navigation case, with opaque routes with no transparency. Developers should also see up to a 40% reduction in CPU and GPU usage for simple iOS animations, depending on the hardware. 

Additionally, Flutter 1.17 promises a 70% reduction in memory when scrolling quickly through large images, and may improve performance on devices with more memory use. 

This release also uses Apple's Metal API for accessing an iOS device's GPU by default instead of OpenGL, allowing for faster Flutter apps on the iPhones and iPads that support Metal. This will increase rendering speeds by up to about 50% on average, depending on the workload, says Sells.  

However, he notes that on iOS devices with processors below the A7 chip or those running iOS versions older than iOS 10, which don't fully support Metal, Flutter continues to use OpenGL. Apple deprecated OpenGL on iOS in 2018 with iOS 12. 

More of Google's Material Design is coming to Flutter. The project has added NavigationRail to this release, offering developers a navigation widget designed by the Material Design Team that's displayed on the left or right of an app.   

"The NavigationRail is great for apps that can switch between mobile and desktop form factors because it's very easy to swap in for a BottomNavigator as your app's screen size increases," says Sell. 

Material Design is also influencing Flutter Text Theming. The TextTheme API has been updated in this release to match the current Material spec, but maintains the old names so developers' code doesn't break. However, the old names have been deprecated, so developers will see warnings to adopt the new names.

Google's Dart programming language is growing more popular with developers. RedMonk's ranking for Dart rose from 33 to 24 over the past 18 months. GitHub also ranked Dart and Flutter as the fastest growing languages of 2019. 

SEE: Programming language Rust's adoption problem: Developers reveal why more aren't using it

The Dart SDK 2.8 improves the package management 'pub tool' for the pub.dev package repository by way of a new tool called 'pub outdated' to ensure package dependencies are kept up to date. 

This feature allows the Dart SDK to enable dependency version discovery. The action is available within integrated developer environments that support Dart or Flutter or users can run it from the terminal.  

This release introduces some breaking changes in the Dart language and libraries. However, the changes lay the groundwork for Dart's support of null safety, according to Google. 

Dart 2.8 improves the pub tool with support for fetching packages in parallel when running 'pub get' and by deferring 'pub run' precompilation. 

Google's informal benchmarks found total execution time was cut from 6.5 seconds in Flutter 1.12, which uses Dart 2.7, to 2.5 seconds in Flutter 1.17, which uses Dart 2.8.