basysKom Application Development Services

How does Flutter work on Embedded
Essential Summary
Learn about the different Flutter Embedders for embedded Linux! What choices do you have and which aligns best to your project goals?

After you’ve read the first part and recognize the benefits of Flutter on embedded hardware, especially in terms of mobile application reuse and avoiding licensing challenges, let’s see what it takes to run your Flutter app on an embedded device.

Running Flutter on Embedded Devices

In general, Flutter requires an Embedder, which acts as an abstraction layer between Flutter/Dart and system resources such as graphics surfaces, file systems, touch input, and other hardware components. The Embedder allows Flutter to draw UI elements, respond to user interactions, and manage system-level resources.

Building an Embedder

Creating an Embedder is a complex task that involves connecting Flutter to low-level hardware or OS features of the target platform.

This includes:

  • Configuring graphics interfaces like OpenGL or Vulkan
  • Managing event loops
  • Handling input/output interfaces

Linux on the Desktop relies on windowing systems such as X11 or Wayland. On embedded devices it can make sense to avoid a windowing system altogether (DRM/EGL) to minimize resource usage. This means there cannot be one standard Embedder for Linux.

While Google actually recognize the usecase of running Flutter on Embedded Devices as a valid possibility. There is no official embedder for embedded plattforms. To our luck, this gap is filled by several open-source projects, such as:

  • Flutter-Pi
  • Sony Embedder
  • Toyota IVI Homescreen

Comparison of Popular Flutter Embedders for Embedded Systems

EMBEDDER
SUPPORTED ARCHITECTURE
GRAPHICS BACKEND
KEY FEATURES
TARGET USECASES
Flutter-Pi
32-bit and 64-bit CPUs
DRM/EGL
Lightweight, supports low-cost hardware
Budget-sensitive embedded projects
Sony Embedder
64-bit CPUs
Wayland
Complex GUIs, multi-application setups
Consumer electronics, industrial use
Toyota IVI Homescreen
64-bit CPUs
Wayland
with EGL and Vulkan
as backend
Automotive-focused, multi-window IVI systems
In-vehicle infotainment systems
  • Flutter-Pi is the only option that supports both 32-bit and 64-bit CPUs, making it suitable for a wide range of hardware (not only Raspberry Pi), especially budget-friendly options. It is ideal for simpler use cases where lightweight performance is key.
  • Sony Embedder is geared towards 64-bit systems with robust support for Wayland, enabling complex GUIs that can run multiple applications. This makes it suitable for consumer electronics or industrial embedded environments.
  • Toyota IVI Homescreen is specifically built with in-vehicle infotainment systems in mind, supporting advanced multi-window setups via Wayland with EGL or Vulkan backends. There is a wide range of plugins to cover various usecases such as cloud login, web view, etc. For a list, take a look at their GitHub page.
For more information on building an Embedder and using these existing implementations, refer to:
  1. Flutter Embedder Documentation
  2. Flutter Community – Flutter-Pi Project
  3. Sony Embedder – GitHub
  4. Toyota IVI Homescreen Embedder – GitHub

Choosing the Right Flutter Embedder for Your Embedded Project

The Sony Embedder and Toyota IVI Homescreen have distinct advantages, such as support for Wayland, which allows for more complex multi-application setups. However, these two embedders are limited to 64-bit CPUs. While both provide the capability to create advanced, multi-window GUIs, they also tend to use more system resources, potentially leading to slower performance in some cases. This trade-off can be worthwhile if your project requires high complexity or advanced features.

Flutter-Pi is, because of its versatility in supporting both 32-bit and 64-bit CPUs, a good choice for many embedded devices (and not only for Raspberry Pi). The support for 32-bit makes it ideal for projects that need cost-effective hardware. Its lightweight nature and broader hardware compatibility makes it a strong choice for HMIs where minimizing costs is important.

Conclusion

In this part, we focused on key considerations for selecting the right Flutter Embedder for your embedded project. In the upcoming part three of this blog series, we will explore a potential software architecture for a cross-platform scenario.

Concluding part two, you may take with you that the choice of Embedder should align with your project goals—whether it’s prioritizing hardware efficiency with Flutter-Pi, or harnessing advanced GUI capabilities with Sony and Toyota solutions. If you’re uncertain about which Embedder is best for you, feel free to reach out to us for an initial assessment by our experts.

Picture of Jeremias Bosch

Jeremias Bosch

Jeremias Bosch consults in his position as Technical Project Manager our customers in building embedded HMI applications, as well as the implementation of next generation cloud projects. He is responsible for the system/software-architecture and the development within customer projects as well as the agile project management. He has over 12 years of experience in developing HMIs and Web Applications. He has delivered multiple large and medium scale Qt Quick and cloud applications in industries such as automotive, aerospace and manufacturing engineering. He holds a diploma of computer science from the University of Applied Sciences in Isny. Is a certifed SCRUM Master and Product Owner as well as a certifed Qt Developer.

Leave a Reply

Your email address will not be published. Required fields are marked *

More Blogarticles

basysKom Newsletter

We collect only the data you enter in this form (no IP address or information that can be derived from it). The collected data is only used in order to send you our regular newsletters, from which you can unsubscribe at any point using the link at the bottom of each newsletter. We will retain this information until you ask us to delete it permanently. For more information about our privacy policy, read Privacy Policy