So, this isn't an issue but rather a question. As far as i can see we're still building the application itself in Dart? and go is just running as a wrapper? If so how's that Single Codebase in the readme 馃槃
Did you mean single go codebase _or_ single dart codebase?
Again, Sorry for opening this as an issue =)
Good questions!
The Readme wasn't clear enough, I updated it.
Here are (hopefully) the answers to your questions:
"we're still building the application itself in Dart?"
Yes
"go is just running as a wrapper?"
That where you got confused (you're not the only one :smile:).
This project does wrap the Flutter engine to Golang.
But that not it! The biggest part is about handling the OpenGL's Buffer, the mouse, the keyboard and the plugins' system. Those 'handlers' needs to be written for each platform, and once they are written, they are passed into the Flutter engine in order to draw the flutter's app, notify the engine of a mouse click,...
Instead of writing the handlers for each platform, as google/flutter-desktop-embedding does, the handlers are written once and shared on Windows, MacOS, and Linux, allowing faster development.
"Did you mean single go codebase or single dart codebase?"
By Single codebase, I mean a single desktop embedder codebase, which happens to be written in go.
If I wasn't clean enough, PLEASE let me know!
@Drakirus Now i get it. The readme was a little bit confusing 馃檭.
The flutter engine doesn't know how to deal with each platform it only knows how to draw stuff based on the input it receives and exposes abstractions for whatever platform to implement. The purpose of this project is, _instead of writing platform specific implementations_, to only write it once because _go_ already did that for us. The result is a more maintainable, unified flutter engine embedder.
This is awesome!
Is the Readme clear enough?
If no, can I reuse your description to describe the project? (your English is way better than mine)
@Drakirus Of course, In this case here's a rephrased version of both your readme and my description that i think will better express the project. Feel free to use/edit it.
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. This 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:.