Setting Up a Linux Environment for Flutter Development
Contents
-
System Dependencies
-
Workflow: Configuring the Linux Toolchain
-
Workflow: Validating the Environment
-
Workflow: Preparing for Distribution (Snapcraft)
-
Examples
System Dependencies
To build and run Flutter applications on a Linux desktop, install the required C/C++ toolchain and system libraries. Flutter relies on dart:ffi to interface with Linux system calls and the GTK framework for UI rendering.
Required packages for Debian/Ubuntu-based distributions:
-
Core Utilities: curl , git , unzip , xz-utils , zip
-
Build Tools: clang , cmake , ninja-build , pkg-config
-
Libraries: libglu1-mesa , libgtk-3-dev , libstdc++-12-dev
Workflow: Configuring the Linux Toolchain
Follow this sequential workflow to prepare the Linux host for Flutter desktop development.
Task Progress:
-
- Update package lists and upgrade existing packages.
-
- Install core utilities and build dependencies.
-
- Configure IDE/Editor with Flutter support.
-
- (Conditional) Enable Linux support on ChromeOS.
- Update and Install Dependencies Execute the following command to install all required packages on Debian/Ubuntu systems:
sudo apt-get update -y && sudo apt-get upgrade -y sudo apt-get install -y curl git unzip xz-utils zip libglu1-mesa clang cmake ninja-build pkg-config libgtk-3-dev libstdc++-12-dev
- Conditional: ChromeOS Setup
- If developing on a Chromebook: Turn on Linux support in the ChromeOS settings. Ensure the Linux container is fully updated using the apt-get commands above before proceeding.
- IDE Configuration Install Visual Studio Code, Android Studio, or an IntelliJ-based IDE. Install the official Dart and Flutter extensions/plugins to enable language server features and debugging capabilities.
Workflow: Validating the Environment
Run this feedback loop to ensure the toolchain is correctly recognized by the Flutter SDK.
Task Progress:
-
- Run environment validator.
-
- Verify connected Linux devices.
-
- Resolve toolchain errors.
- Run Validator Execute the Flutter diagnostic tool with verbose output:
flutter doctor -v
- Review and Fix (Feedback Loop)
- If errors exist under the "Linux toolchain" section: Review the missing dependencies, install the flagged packages, and re-run flutter doctor -v . Repeat until the Linux toolchain section passes.
- Verify Device Availability Ensure the Linux desktop is recognized as a valid deployment target:
flutter devices
Expected Output: At least one entry must display with the platform marked as linux.
Workflow: Preparing for Distribution (Snapcraft)
When preparing a release build for the Snap Store, configure the Snapcraft build environment.
Task Progress:
-
- Install Snapcraft and LXD.
-
- Configure LXD.
-
- Build the Snap package.
- Install Build Tools
sudo snap install snapcraft --classic sudo snap install lxd
- Configure LXD Initialize LXD and add the current user to the lxd group:
sudo lxd init sudo usermod -a -G lxd <your_username>
Note: Log out and log back in to apply the group changes.
- Build the Snap Navigate to the project root containing the snap/snapcraft.yaml file and execute the build:
snapcraft --use-lxd
Examples
Baseline snapcraft.yaml Configuration
Use this template for the <project_root>/snap/snapcraft.yaml file when packaging a Flutter Linux app for the Snap Store.
name: super-cool-app version: 0.1.0 summary: Super Cool App description: Super Cool App that does everything!
confinement: strict base: core22 grade: stable
slots: dbus-super-cool-app: interface: dbus bus: session name: org.bar.super_cool_app
apps: super-cool-app: command: super_cool_app extensions: [gnome] plugs: - network slots: - dbus-super-cool-app
parts: super-cool-app: source: . plugin: flutter flutter-target: lib/main.dart