About this project
go-flutter is an unofficial open-source project that brings Flutter to desktop platforms. Flutter is designed for building native apps on iOS and Android from a single codebase; this project extends that approach to Windows, macOS and Linux using Go and GLFW.
The Flutter engine does not itself handle desktop platform concerns such as mouse and keyboard input. It exposes an abstraction layer for platforms to implement. go-flutter implements Flutter's Embedding API with a single codebase that runs on Windows, macOS and Linux. GLFW is used for rendering because it provides suitable abstractions over OpenGL buffers, mouse and keyboard for each platform. Go was chosen because it offers consistent tooling across platforms and keeps code simple and readable, which helps when building cross-platform plugins.
Getting started: the recommended path is to install hover, the official go-flutter tool for setting up, building and running Flutter apps on the desktop, including hot reload. The project points to a hover tutorial and a separate examples repository. More in-depth information is available in the wiki.
Supported features include Linux, macOS and Windows; hot reload; a plugin system with BinaryMessageCodec, BinaryMessageChannel, StandardMessageCodec, JSONMessageCodec, StandardMethodCodec and MethodChannel; plugin detection for supported plugins; importability as a Go library into custom projects; UTF-8 text input; clipboard copy and paste; window title and icon; standard keyboard shortcuts such as ctrl-c, ctrl-v, ctrl-x, ctrl-a, Home, End, shift-Home, shift-End, arrow navigation with ctrl and shift modifiers, Backspace, ctrl-Backspace and Delete; mouse-over/hovering; mouse buttons; raw keyboard events; distribution formats including windows-msi, mac-dmg, linux-appimage and more; and cross-compiling using Docker.
Examples live in a separate repository, and some popular plugins are already implemented in a dedicated plugins repository. The wiki contains a tutorial on creating a plugin.
Version compatibility: the project tries to stay compatible with Flutter's beta channel; it remains compatible with the latest stable Go release; and it uses go-gl/glfw for GLFW v3.3. The project is licensed under the BSD 3-Clause License.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.