Skip to content
Bringing Flutter to Windows, MacOS and Linux - through the power of Go and GLFW.
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE .github: Add example template Apr 2, 2019
embedder Cleanup PointerPhaseNone Apr 5, 2019
internal internal/execpath: cleanup Mar 22, 2019
plugin Fix broken tests, now using ResponseSender. Apr 2, 2019
.gitattributes Add new example project + Importable as a Go library Sep 11, 2018
.gitignore
LICENSE Update LICENSE Feb 17, 2019
README.md README.md: Add mouse-over to supported features Apr 15, 2019
application.go
doc.go Add codecs and a plugin structure, rework the system plugins. Mar 17, 2019
glfw.go Cleanup debug remnant Apr 6, 2019
go.mod go.mod: Add test dependencies Apr 1, 2019
go.sum
keyboard.go Moved project (#76) Feb 20, 2019
mascot.png Add new example project + Importable as a Go library Sep 11, 2018
messenger.go
navigation.go
option.go Resolve executable path for flutter_assets an icudtl.dat Mar 22, 2019
platform.go Add support for sync method handlers Mar 28, 2019
plugin.go chore: Make lint and vet happier and fix spelling mistakes. Mar 18, 2019
stocks.jpg Added a screenshot of the Stocks demo app on macOS. Sep 26, 2018
textinput.go
textinput_model.go Add codecs and a plugin structure, rework the system plugins. Mar 17, 2019

README.md

go-flutter - A package that brings Flutter to the desktop

Documentation Go Report Card Join the chat at https://gitter.im/go-flutter-desktop/go-flutter

Purpose

Flutter allows you to build beautiful native apps on iOS and Android from a single codebase.

This project brings Flutter to the desktop through the power of Go and GLFW.

The flutter engine itself doesn't know how to deal with desktop platforms (eg handling mouse/keyboard input). Instead, it exposes an abstraction layer for whatever platform to implement. This project implements the Flutter's Embedding API using a single code base that runs on Windows, MacOS, and Linux. For rendering, GLFW fits the job because it provides the right abstractions over the OpenGL's Buffer/Mouse/Keyboard for each platform.

The choice of Golang comes from the fact that it has the same tooling on every platform. Plus Golang is a great language because it keeps everything simple and readable, which makes it easy to build cross-platform plugins.

Screenshot of the Stocks demo app on macOS

Getting started

The best way to get started is to install hover, the official go-flutter tool to set up, build and run Flutter apps on the desktop, including hot-reload.

Read the hover tutorial to run your app on desktop, or start with one of our example apps.

It's also possible to manually install and use go-flutter, but this is not recomended for new users.

Supported features

  • Linux 🐧
  • MacOS 🍎
  • Windows 🏁
  • Hot Reload
  • Plugin system
    • BinaryMessageCodec, BinaryMessageChannel
    • StandardMessageCodec, JSONMessageCodec
    • StandardMethodCodec, MethodChannel
  • Importable as Go library into custom projects
  • Text input handling
  • Clipboard copy & paste
  • Window title and icon
  • Standard keyboard shortcuts
    • ctrl-c ctrl-v ctrl-x ctrl-a
    • Home End shift-Home shift-End
    • Left ctrl-Left ctrl-shift-Left
    • Right ctrl-Right ctrl-shift-Right
    • Backspace ctrl-Backspace Delete
  • Mouse-over/hovering

Are you missing a feature? Open an issue!

Examples

A separate repository contains example Flutter apps that also run on the desktop. Go to github.com/go-flutter-desktop/examples to give them a try.

Plugins

Some popular plugins are already implemented over at github.com/go-flutter-desktop/plugins. If you have implemented a plugin that you would like to share, feel free to open a PR on the plugins repository!

Version compatibility

Flutter version

Flutter itself is a relatively young project. Its framework and engine are updated often. The go-flutter project tries to stay compatible with the beta channel of Flutter.

Go version

Updating Go is simple, and Go seldomly has backwards incompatible changes. This project remains compatible with the latest Go stable release.

GLFW version

This project uses go-gl/glfw for GLFW v3.2.

License

BSD 3-Clause License

You can’t perform that action at this time.