Desktop support for Flutter
Flutter provides support for compiling a native Windows, macOS, or Linux desktop app. Flutter's desktop support also extends to plugins—you can install existing plugins that support the Windows, macOS, or Linux platforms, or you can create your own.
Create a new project
#You can use the following steps to create a new project with desktop support.
Set up desktop devtools
#Consult the guide for your target desktop environment:
If flutter doctor
finds problems or missing components for a platform that you don't want to develop for, you can ignore those warnings. Or you can disable the platform altogether using the flutter config
command, for example:
flutter config --no-enable-ios
Other available flags:
--no-enable-windows-desktop
--no-enable-linux-desktop
--no-enable-macos-desktop
--no-enable-web
--no-enable-android
--no-enable-ios
After enabling desktop support, restart your IDE so that it can detect the new device.
Create and run
#Creating a new project with desktop support is no different than creating a new Flutter project for other platforms.
Once you've configured your environment for desktop support, you can create and run a desktop application either in the IDE or from the command line.
Using an IDE
#After you've configured your environment to support desktop, make sure you restart the IDE if it was already running.
Create a new application in your IDE and it automatically creates iOS, Android, web, and desktop versions of your app. From the device pulldown, select windows (desktop), macOS (desktop), or linux (desktop) and run your application to see it launch on the desktop.
From the command line
#To create a new application that includes desktop support (in addition to mobile and web support), run the following commands, substituting my_app
with the name of your project:
flutter create my_app
cd my_app
To launch your application from the command line, enter one of the following commands from the top of the package:
C:\> flutter run -d windows
flutter run -d macos
flutter run -d linux
Build a release app
#To generate a release build, run one of the following commands:
PS C:\> flutter build windows
flutter build macos
flutter build linux
Add desktop support to an existing Flutter app
#To add desktop support to an existing Flutter project, run the following command in a terminal from the root project directory:
flutter create --platforms=windows,macos,linux .
This adds the necessary desktop files and directories to your existing Flutter project. To add only specific desktop platforms, change the platforms
list to include only the platform(s) you want to add.
Plugin support
#Flutter on the desktop supports using and creating plugins. To use a plugin that supports desktop, follow the steps for plugins in using packages. Flutter automatically adds the necessary native code to your project, as with any other platform.
Writing a plugin
#When you start building your own plugins, you'll want to keep federation in mind. Federation is the ability to define several different packages, each targeted at a different set of platforms, brought together into a single plugin for ease of use by developers. For example, the Windows implementation of the url_launcher
is really url_launcher_windows
, but a Flutter developer can simply add the url_launcher
package to their pubspec.yaml
as a dependency and the build process pulls in the correct implementation based on the target platform. Federation is handy because different teams with different expertise can build plugin implementations for different platforms. You can add a new platform implementation to any endorsed federated plugin on pub.dev, so long as you coordinate this effort with the original plugin author.
For more information, including information about endorsed plugins, see the following resources:
- Developing packages and plugins, particularly the Federated plugins section.
- How to write a Flutter web plugin, part 2, covers the structure of federated plugins and contains information applicable to desktop plugins.
- Modern Flutter Plugin Development covers recent enhancements to Flutter's plugin support.
Samples and codelabs
#- Write a Flutter desktop application
- A codelab that walks you through building a desktop application that integrates the GitHub GraphQL API with your Flutter app.
You can run the following samples as desktop apps, as well as download and inspect the source code to learn more about Flutter desktop support.
- Wonderous app running app, repo
- A showcase app that uses Flutter to create a highly expressive user interface. Wonderous focuses on delivering an accessible and high-quality user experience while including engaging interactions and novel animations. To run Wonderous as a desktop app, clone the project and follow the instructions provided in the README.
- Flokk announcement blogpost, repo
- A Google contacts manager that integrates with GitHub and Twitter. It syncs with your Google account, imports your contacts, and allows you to manage them.
- Photo Search app
- A sample application built as a desktop application that uses desktop-supported plugins.
Unless stated otherwise, the documentation on this site reflects the latest stable version of Flutter. Page last updated on 2024-04-04. View source or report an issue.