Embedded devices are often on the low-end when it comes to graphics performance. However, they often feature user interfaces which can range from a simple button-based layout to a beautiful multi-page view with animations. So far, the industry has mostly relied on Qt for UI on such systems. In recent years, a new player has entered the game: Flutter. Fully open-source, with a wide range of built-in modern UI elements, it is a great option for designing a UI for embedded systems.
Our team has taken on the challenge of getting Flutter to run on low-end ARM32 development boards from Phytec and evaluating its commercial feasibility. One big advantage of Flutter is its portability; as the application is written in Dart, it is able to run on a Dart VM, or be compiled down to a native binary with the only difference between platforms being the Flutter engine. This means that you can develop your app fully on a desktop computer and easily deploy it to an embedded, Android, or iOS device, among others.
Flutter has a popular unofficial port designed for embedded systems, which includes support for display backends present on such devices, like Wayland, EGLStream, and GBM.
However, this is not to say that there might not be any issues getting the Flutter engine to initially run. During our testing, we have encountered a few quirks related to the platform we were deploying to. Specifically, some processor architectures might not support integer division, which we need to specify when building the app. You might also have to reconsider your choice of graphics drivers, as some play with Flutter nicer than others.
Overall, the Flutter community is growing each day and we can see it being used more and more on all kinds of devices making it a great option if you want to give your embedded device’s UI a makeover.