Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/go-flutter-desktop/go-flutter
Flutter on Windows, MacOS and Linux - based on Flutter Embedding, Go and GLFW.
https://github.com/go-flutter-desktop/go-flutter
cross-platform desktop flutter glfw go golang hover linux macos ui windows
Last synced: 10 days ago
JSON representation
Flutter on Windows, MacOS and Linux - based on Flutter Embedding, Go and GLFW.
- Host: GitHub
- URL: https://github.com/go-flutter-desktop/go-flutter
- Owner: go-flutter-desktop
- License: bsd-3-clause
- Created: 2018-08-19T22:04:27.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-04T16:37:26.000Z (about 1 month ago)
- Last Synced: 2024-10-13T23:21:09.492Z (26 days ago)
- Topics: cross-platform, desktop, flutter, glfw, go, golang, hover, linux, macos, ui, windows
- Language: Go
- Homepage: https://hover.build/
- Size: 1.42 MB
- Stars: 5,861
- Watchers: 121
- Forks: 282
- Open Issues: 66
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go - go-flutter-desktop/go-flutter - based on Flutter Embedding, Go and GLFW.|5,604| (Popular)
- Fuchsia-Guide - Go-flutter - Flutter-Engine-Embedders) using a single code base that runs on Windows, macOS, and Linux. For rendering, [GLFW](https://github.com/go-gl/glfw) fits the job because it provides the right abstractions over the OpenGL's Buffer/Mouse/Keyboard for each platform. (Flutter Tools & Frameworks)
- go-awesome - go-flutter - Bind Flutter to desktop applications (Open source library / Desktop Development)
- awesome-golang-repositories - go-flutter - based on Flutter Embedding, Go and GLFW. (Repositories)
- Chrome-OS-Guide - Go-flutter - Flutter-Engine-Embedders) using a single code base that runs on Windows, macOS, and Linux. For rendering, [GLFW](https://github.com/go-gl/glfw) fits the job because it provides the right abstractions over the OpenGL's Buffer/Mouse/Keyboard for each platform. (Flutter Tools)
- my-awesome - go-flutter-desktop/go-flutter - platform,desktop,flutter,glfw,go,golang,hover,linux,macos,ui,windows pushed_at:2024-10 star:5.9k fork:0.3k Flutter on Windows, MacOS and Linux - based on Flutter Embedding, Go and GLFW. (Go)
README
# go-flutter - A package that brings Flutter to the desktop
[![Awesome Flutter](https://img.shields.io/badge/Awesome-Flutter-blue.svg?longCache=true&style=flat)](https://github.com/Solido/awesome-flutter)
[![Documentation](https://godoc.org/github.com/go-flutter-desktop/go-flutter?status.svg)](http://godoc.org/github.com/go-flutter-desktop/go-flutter)
[![Go Report Card](https://goreportcard.com/badge/github.com/go-flutter-desktop/go-flutter)](https://goreportcard.com/report/github.com/go-flutter-desktop/go-flutter)
[![Join the chat at https://gitter.im/go-flutter-desktop/go-flutter](https://badges.gitter.im/go-flutter-desktop/go-flutter.svg)](https://gitter.im/go-flutter-desktop/go-flutter?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)## Purpose
[Flutter](http://flutter.io/) allows you to build beautiful native apps on iOS and Android from a single codebase.
This [unofficial](https://github.com/go-flutter-desktop/go-flutter/issues/191#issuecomment-511384007) project brings Flutter to the desktop through the power of [Go](http://golang.org/) and [GLFW](https://github.com/go-gl/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](https://github.com/flutter/flutter/wiki/Custom-Flutter-Engine-Embedders) using a single code base that runs on Windows, macOS, and Linux. For rendering, [**GLFW**](https://github.com/go-gl/glfw) fits the job because it provides the right abstractions over the OpenGL's Buffer/Mouse/Keyboard for each platform.
The choice of [Golang](https://github.com/golang/go) 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.
## Getting started
The best way to get started is to install [hover](https://github.com/go-flutter-desktop/hover), the official go-flutter tool to set up, build and run Flutter apps on the desktop, including hot-reload.
Read the [hover tutorial](https://github.com/go-flutter-desktop/hover) to run your app on the desktop, or start with [one of our example apps](https://github.com/go-flutter-desktop/examples).
If you want more in-depth information about go-flutter, read the [wiki](https://github.com/go-flutter-desktop/go-flutter/wiki).
## Supported features
- Linux :penguin:
- MacOS :apple:
- Windows :checkered_flag:
- [**Hot Reload**](https://github.com/go-flutter-desktop/go-flutter/issues/129#issuecomment-513590141)
- Plugin system
- BinaryMessageCodec, BinaryMessageChannel
- StandardMessageCodec, JSONMessageCodec
- StandardMethodCodec, **MethodChannel**
- Plugin detection for [supported plugins](https://github.com/go-flutter-desktop/go-flutter/wiki/Create-a-hover-compatible-plugin)
- Importable as Go library into custom projects
- UTF-8 Text input
- 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
- Mouse-buttons
- RawKeyboard events
- Distribution format (windows-msi, mac-dmg, linux-appimage, and more)
- Cross-compiling using docker :whale:Are you missing a feature? [Open an issue!](https://github.com/go-flutter-desktop/go-flutter/issues/new)
## Examples
A separate repository contains example Flutter apps that also run on the desktop. Go to [github.com/go-flutter-desktop/examples](https://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](https://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!For a detailed tutorial on how to create a plugin, read the [wiki](https://github.com/go-flutter-desktop/go-flutter/wiki/Implement-a-plugin).
## 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](https://github.com/flutter/flutter/wiki/Flutter-build-release-channels) of Flutter.
### Go version
Updating Go is simple and Go [seldomly has backwards-incompatible changes](https://golang.org/doc/go1compat). This project remains compatible with the [latest Go stable release](https://golang.org/dl/).
### GLFW version
This project uses go-gl/glfw for GLFW v3.3.
## License
[BSD 3-Clause License](LICENSE)