Google has introduced significant updates to both its Flutter framework and the Dart programming language, marking the release of Flutter 3.24 and Dart 3.5 on August 6. Among the new features, one of the most notable is the early preview of the Flutter GPU API, a low-level graphics API designed for developers who want to create custom rendering solutions from the ground up. This API opens up new possibilities for building high-performance, immersive experiences by allowing developers to define their own raster pipelines and send draw calls directly to the GPU.
The Flutter GPU API is integrated into the Flutter SDK, providing developers with the ability to design specialized renderers, such as 2D Canvas alternatives, 3D scene graphs, or particle systems, without the need for the bulky engine-level features that are typically required for such tasks. Google acknowledges that graphics programming has a steep learning curve, and as such, most developers are expected to use higher-level rendering packages rather than build everything from scratch. To assist with this, Google has also introduced the Flutter Scene package, which leverages the new GPU API to facilitate the import of animated glTF models and the creation of 3D scenes, making it easier for developers to create 3D applications and games within the Flutter and Dart ecosystems.
In addition to the GPU API, Google’s Flutter and Dart updates include several other noteworthy enhancements aimed at improving the development process. The new versions bring early support for the Swift Package Manager, allowing Flutter developers to tap into the Swift package ecosystem for better integration with iOS. Furthermore, the updates include platform view and webview support for macOS apps, enabling Flutter apps to seamlessly incorporate native macOS UI components. These additions enhance Flutter’s versatility, enabling developers to build cross-platform apps that work smoothly across mobile, web, and desktop environments.
Dart 3.5 introduces several important updates, including minor changes to core libraries and some breaking changes. Notably, the context used by the compiler for type inference on await expressions has been adjusted to align with the behavior of the analyzer. Additionally, Dart has seen improvements in its native interoperability, making it easier to call directly into C, Java, Kotlin, Objective-C, and Swift. The language now supports passing pointers from Dart TypedData objects directly to the Foreign Function Interface, eliminating the need for copying memory between Dart and native code. Java exceptions and Kotlin top-level functions are now also supported, further expanding Dart’s capabilities for developers working with native code.