explaingit

go-flutter-desktop/go-flutter

5,933GoAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

An unofficial project that lets you run Flutter apps on Windows, macOS, and Linux desktop, it bridges the Flutter engine to desktop inputs, windows, and rendering so your mobile code runs on a computer.

Mindmap

mindmap
  root((go-flutter))
    What it does
      Flutter on desktop
      Window management
      Input handling
      Hot reload
    Tech stack
      Go
      Flutter
      GLFW
      OpenGL
    Use cases
      Desktop app packaging
      Cross-platform builds
      Plugin development
    Audience
      Flutter developers
      Mobile-to-desktop teams
      Open source contributors
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a Flutter app once and run it on Windows, macOS, and Linux without rewriting it for each platform

USE CASE 2

Package your Flutter desktop app into a Windows installer, macOS disk image, or Linux AppImage for distribution

USE CASE 3

Use hot reload while developing your Flutter desktop app to see code changes on screen without restarting

USE CASE 4

Cross-compile your Flutter desktop app for a different operating system using Docker from any machine

Tech stack

GoFlutterGLFWOpenGLDocker

Getting it running

Difficulty · moderate Time to first run · 1h+

Requires the hover companion tool, Flutter SDK, and Go installed, tracks Flutter's beta channel.

Use freely for any purpose, including commercial projects, as long as you keep the original copyright and license notices.

In plain English

Flutter is a toolkit originally built by Google for creating mobile apps that run on both iOS and Android from one shared codebase. go-flutter is an unofficial project that extends Flutter to desktop operating systems: Windows, macOS, and Linux. It was created because the Flutter engine, on its own, does not know how to handle desktop inputs like mouse clicks or keyboard shortcuts, window resizing, or operating-system-level events. The project solves that gap by implementing Flutter's Embedding API, which is a specification for how any platform can plug into the Flutter engine. The implementation is written in Go, a programming language known for having consistent tooling across operating systems. For the actual screen rendering and input handling, it uses a library called GLFW, which provides a common interface over OpenGL graphics on all three platforms. Developers use a companion tool called hover to set up, build, and run their Flutter apps on the desktop. Hover also supports hot reload, meaning you can change code and see the result on screen without restarting the app. The project ships a plugin system that lets Flutter's existing communication channels work on desktop, so code that talks to platform-native features can be extended to desktop as well. Supported features include clipboard copy and paste, text input, mouse hovering and button clicks, standard keyboard shortcuts, and packaging your app into distribution formats like a Windows installer, a macOS disk image, or a Linux AppImage. Cross-compiling for a different platform using Docker is also supported. The project tracks Flutter's beta release channel and targets the latest stable Go release. The license is BSD 3-Clause. Example apps and pre-built plugins live in separate companion repositories under the same GitHub organization.

Copy-paste prompts

Prompt 1
I have an existing Flutter mobile app. Walk me through the steps to run it on macOS desktop using go-flutter and the hover tool.
Prompt 2
Set up hover for a new Flutter desktop project on Windows, show me the installation steps and the command to run the app with hot reload.
Prompt 3
My Flutter desktop app needs to use clipboard paste. Show me how go-flutter handles the clipboard plugin and how to wire it up in my Dart code.
Prompt 4
Package my go-flutter app into a distributable macOS .dmg file using hover. What command do I run and what does the output look like?
Prompt 5
I want to write a custom platform plugin for go-flutter that calls a native Go library. Show me the structure of the Go plugin file and how to register it.
Open on GitHub → Explain another repo

← go-flutter-desktop on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.