-
Notifications
You must be signed in to change notification settings - Fork 1
Desktop shells
Work is ongoing to extend Flutter to support desktop as a target environment, allowing developers to create Windows, macOS, and Linux applications with Flutter.
For instructions on using Flutter to build desktop applications, including how to set up your development environment, see the flutter.dev documentation
A high-level overview of the status of each platform is provided below. For details see the list of desktop-related bugs, as well as the embedding source.
The Windows embedding is in beta. It is Win32-based, a UWP version is in development.
The macOS embedding is in beta.
The Linux embedding is in beta. It is GTK-based; ideally we would like to create a library that allows embedding Flutter regardless of whether you're using GTK, Qt, wxWidgets, Motif, or another arbitrary toolkit for other parts of your application, but have not yet determined a good way to do that. Support for other toolkits may be added in the future.
Writing plugins is supported on all platforms, however not all plugins have desktop support. See the flutter.dev documentation for more details.
Currently there is no support for Add-to-App for any desktop platform. If you are familiar with doing native development on your platform(s), it is possible to integrate the desktop Flutter libraries in your own app. There is not currently much guidance, so you will be well off the beaten path, but the information below will help get you started.
Unless you want to build the Flutter engine from source, you will need a prebuilt library. The easiest way to get the right version for your version of Flutter is to run flutter precache
with the --linux
, --macos
, or --windows
flag (depending on your platform). They will be downloaded to bin/cache/artifacts/engine/
under your Flutter tree.
The Windows library provides a C API. To make it easier to use, there is a C++ wrapper available which you can build into your application to provide a higher-level API surface. The source for it is downloaded with the library. You will need to build it as part of your application.
See the headers that come with the library (or wrapper) for your platform for information on using them. It may be helpful to look at the basic application produced by flutter create
to see how it calls the APIs.
In addition to linking the Flutter library, your application will need to bundle your Flutter assets (as created by flutter build bundle
). On Windows and Linux you will also need the ICU data from the Flutter engine
(look for icudtl.dat
under the bin/cache/artifacts/engine
directory in your Flutter tree).
- Home of the Wiki
- Roadmap
- API Reference (stable)
- API Reference (master)
- Glossary
- Contributor Guide
- Chat on Discord
- Code of Conduct
- Issue triage reports
- Our Values
- Tree hygiene
- Issue hygiene and Triage
- Style guide for Flutter repo
- Project teams
- Contributor access
- What should I work on?
- Running and writing tests
- Release process
- Rolling Dart
- Manual Engine Roll with Breaking Commits
- Updating Material Design Fonts & Icons
- Postmortems
- Setting up the Framework development environment
- The Framework architecture
- The flutter tool
- API Docs code block generation
- Running examples
- Using the Dart analyzer
- The flutter run variants
- Test coverage for package:flutter
- Writing a golden-file test for package:flutter
- Setting up the Engine development environment
- Compiling the engine
- Debugging the engine
- Using Sanitizers with the Flutter Engine
- Testing the engine
- The Engine architecture
- Flutter's modes
- Engine disk footprint
- Comparing AOT Snapshot Sizes
- Custom Flutter engine embedders
- Custom Flutter Engine Embedding in AOT Mode
- Flutter engine operation in AOT Mode
- Engine-specific Service Protocol extensions
- Crashes
- Supporting legacy platforms
- Metal on iOS FAQ
- Engine Clang Tidy Linter
- Why we have a separate engine repo
- Reduce Flutter engine size with MLGO
- Setting up the Plugins development environment
- Setting up the Packages development environment
- Plugins and Packages repository structure
- Plugin Tests
- Contributing to Plugins and Packages
- Releasing a Plugin or Package
- Unexpected Plugins and Packages failures