A Go Custom Flutter Engine Embedder for Desktop
source link: https://www.tuicool.com/articles/hit/7bMZvmF
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Go Flutter desktop embedder
A Go (golang) Custom Flutter Engine Embedder for desktop
Purpose
Disclaimer: Despite being very similar in the end goal, This project doesn't compete with this awesome one.
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. The purpose of this project is to implement Flutter's Embedding API using a SINGLE code base that runs on Windows, MacOS, and Linux. 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, I hope, will encourage people to contribute :grin: .
How to install
From binaries
Check out the Release page for prebuilt versions.From source
Go read first: go-gl/glfw
# Clone git clone https://github.com/Drakirus/go-flutter-desktop-embedder.git cd go-flutter-desktop-embedder # Build the flutter simpleDemo project cd example/simpleDemo/ cd flutter_project/demo/ flutter build bundle cd ../.. # Download the share library, the one corresponding to your flutter version. go run engineDownloader.go # REQUIRED before every `go build`. The CGO compiler need to know where to look for the share library export CGO_LDFLAGS="-L${PWD}" # The share library must stay next to the generated binary. # Get the libraries go get -u -v github.com/Drakirus/go-flutter-desktop-embedder # Build the example project go build main.go # `go run main.go` is not working ATM.
From binaries
Check out the Release page for prebuilt versions.From source
Go read first: go-gl/glfw
# Clone git clone https://github.com/Drakirus/go-flutter-desktop-embedder.git cd go-flutter-desktop-embedder # Build the flutter simpleDemo project cd example/simpleDemo/ cd flutter_project/demo/ flutter build bundle cd ../.. # Download the share library, the one corresponding to your flutter version. go run engineDownloader.go # REQUIRED before every `go build`. The CGO compiler need to know where to look for the share library set CGO_LDFLAGS=-L%cd% # The share library must stay next to the generated binary. # If you ran into a MinGW ld error, checkout: https://github.com/Drakirus/go-flutter-desktop-embedder/issues/34 # Get the libraries go get -u -v github.com/Drakirus/go-flutter-desktop-embedder # Build the example project go build main.go # `go run main.go` is not working ATM.
From binaries
Check out the Release page for prebuilt versions.From source
Go read first: go-gl/glfw
# Clone git clone https://github.com/Drakirus/go-flutter-desktop-embedder.git cd go-flutter-desktop-embedder # Build the flutter simpleDemo project cd example/simpleDemo/ cd flutter_project/demo/ flutter build bundle cd ../.. # Download the share library, the one corresponding to your flutter version. go run engineDownloader.go # REQUIRED before every `go build`. The CGO compiler need to know where to look for the share library export CGO_LDFLAGS="-F${PWD} -Wl,-rpath,@executable_path" # The share library must stay next to the generated binary. # Get the libraries go get -u -v github.com/Drakirus/go-flutter-desktop-embedder # Build the example project go build main.go # `go run main.go` is not working ATM.
Flutter Demos Projects
The examples are available here .
Support
- Linux :penguin:
- Windows :checkered_flag:
- MacOS :apple:
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK