Documentation ¶
Overview ¶
Package flutter combines the embedder API with GLFW and plugins. Flutter and Go on the desktop.
go-flutter is in active development. API's must be considered beta and may be changed.
Index ¶
- Constants
- Variables
- func Run(opt ...Option) (err error)
- type Application
- type EventLoop
- type ExternalTextureHanlderFunc
- type KeyboardShortcuts
- type Option
- func AddPlugin(p Plugin) Option
- func ApplicationICUDataPath(p string) Option
- func ForcePixelRatio(ratio float64) Option
- func OptionKeyboardLayout(keyboardLayout KeyboardShortcuts) Option
- func OptionVMArguments(a []string) Option
- func PopBehavior(p popBehavior) Option
- func ProjectAssetsPath(p string) Option
- func VirtualKeyboardHide(hideCallback func()) Option
- func VirtualKeyboardShow(showCallback func()) Option
- func WindowDimensionLimits(minWidth, minHeight, maxWidth, maxHeight int) Option
- func WindowIcon(iconProivder func() ([]image.Image, error)) Option
- func WindowInitialDimensions(width, height int) Option
- func WindowInitialLocation(xpos, ypos int) Option
- func WindowMode(w windowMode) Option
- type PixelBuffer
- type Plugin
- type PluginGLFW
- type PluginTexture
- type Texture
- type TextureRegistry
Constants ¶
const ( // PopBehaviorNone means the system navigation pop event is ignored. PopBehaviorNone popBehavior = iota // PopBehaviorHide hides the application window on a system navigation pop // event. PopBehaviorHide // PopBehaviorIconify minimizes/iconifies the application window on a system // navigation pop event. PopBehaviorIconify // PopBehaviorClose closes the application on a system navigation pop event. PopBehaviorClose )
const ( // WindowModeDefault is the default window mode. Windows are created with // borders and close/minimize buttons. WindowModeDefault windowMode = iota // WindowModeBorderless removes decorations such as borders and // close/minimize buttons from the window. WindowModeBorderless // WindowModeBorderlessFullscreen starts the application in borderless // fullscreen mode. Currently, only fullscreen on the primary monitor is // supported. This option overrides WindowInitialDimensions. Note that on // some systems a fullscreen window is very hard to close. Make sure your // Flutter application has a close button and use PopBehaviorIconify to // minimize or PopBehaviorClose to close the application. WindowModeBorderlessFullscreen )
Variables ¶
var ( // ProjectVersion contains the version of the build ProjectVersion = "unknown" // ProjectVersion contains the version of the go-flutter been used PlatformVersion = "unknown" // ProjectName contains the application name ProjectName = "unknown" // ProjectOrganizationName contains the package org name, (Can by set upon flutter create (--org flag)) ProjectOrganizationName = "unknown" )
Compile configuration constants persistent across all flutter.Application. The values of config(option.go) can change between flutter.Run calls, those values contains informations that needs to be access globally, without requiring an flutter.Application.
Values overwritten by hover during the 'Compiling 'go-flutter' and plugins' phase.
var KeyboardAzertyLayout = KeyboardShortcuts{ Cut: glfw.KeyX, Copy: glfw.KeyC, Paste: glfw.KeyV, SelectAll: glfw.KeyQ, }
KeyboardAzertyLayout gives an Azerty layout (french)
var KeyboardQwertyLayout = KeyboardShortcuts{ Cut: glfw.KeyX, Copy: glfw.KeyC, Paste: glfw.KeyV, SelectAll: glfw.KeyA, }
KeyboardQwertyLayout is the default key for shortcuts (US-layout)
Functions ¶
Types ¶
type Application ¶
type Application struct {
// contains filtered or unexported fields
}
Application provides the flutter engine in a user friendly matter.
func NewApplication ¶
func NewApplication(opt ...Option) *Application
NewApplication creates a new application with provided options.
func (*Application) Run ¶
func (a *Application) Run() error
Run starts the application and waits for it to finish.
type EventLoop ¶
type EventLoop struct {
// contains filtered or unexported fields
}
EventLoop is a event loop for the main thread that allows for delayed task execution.()
func (*EventLoop) PostTask ¶
func (t *EventLoop) PostTask(task embedder.FlutterTask, targetTimeNanos uint64)
PostTask posts a Flutter engine tasks to the event loop for delayed execution. PostTask must ALWAYS be called on the same goroutine/thread as `newEventLoop`
func (*EventLoop) RunOnCurrentThread ¶
RunOnCurrentThread FlutterDocs:
May be called from any thread. Should return true if tasks posted on the calling thread will be run on that same thread.
The functions PostTask and onExpiredTask should be called from the same thread, this is ensured if the creation of the event loop (through `newEventLoop`) and the PostTask callback (through `a.engine.TaskRunnerPostTask = eventLoop.PostTask`) are done on a calling goroutine which always execute in that thread (`runtime.LockOSThread()`).
func (*EventLoop) WaitForEvents ¶
WaitForEvents waits for an any Rendering or pending Flutter Engine events and returns when either is encountered. Expired engine events are processed
type ExternalTextureHanlderFunc ¶
type ExternalTextureHanlderFunc func(width int, height int) (bool, *PixelBuffer)
ExternalTextureHanlderFunc describes the function that handles external Texture on a given ID.
type KeyboardShortcuts ¶
KeyboardShortcuts contains the configuration for keyboard shortcut keys. This allows an application to support keyboard layout different from US layout.
type Option ¶
type Option func(*config)
Option for Application
func ApplicationICUDataPath ¶
ApplicationICUDataPath specify the path to the ICUData.
func ForcePixelRatio ¶
ForcePixelRatio forces the the scale factor for the screen. By default, go-flutter will calculate the correct pixel ratio for the user, based on their monitor DPI. Setting this option is not advised.
func OptionKeyboardLayout ¶
func OptionKeyboardLayout(keyboardLayout KeyboardShortcuts) Option
OptionKeyboardLayout allow application to support keyboard that have a different layout and therefore different keyboard shortcuts.
func OptionVMArguments ¶
OptionVMArguments specify the arguments to the Dart VM.
func PopBehavior ¶
func PopBehavior(p popBehavior) Option
PopBehavior sets the PopBehavior on the application
func ProjectAssetsPath ¶
ProjectAssetsPath specify the flutter assets directory.
func VirtualKeyboardHide ¶
func VirtualKeyboardHide(hideCallback func()) Option
VirtualKeyboardHide sets an func called when the flutter framework want to hide the keyboard.
func VirtualKeyboardShow ¶
func VirtualKeyboardShow(showCallback func()) Option
VirtualKeyboardShow sets an func called when the flutter framework want to show the keyboard. This Option is interesting for people wanting to display the on-screen keyboard on TextField focus. It's up to the flutter developer to implement (or not) this function with the OS related call.
func WindowDimensionLimits ¶
WindowDimensionLimits specify the dimension limits of the window. Does not work when the window is fullscreen or not resizable.
func WindowIcon ¶
WindowIcon sets an icon provider func, which is called during window initialization. For tips on the kind of images to provide, see https://godoc.org/github.com/go-gl/glfw/v3.2/glfw#Window.SetIcon
func WindowInitialDimensions ¶
WindowInitialDimensions specify the startup's dimension of the window.
func WindowInitialLocation ¶
WindowInitialLocation specify the startup's position of the window. Location, in screen coordinates, of the upper-left corner of the client area of the window.
func WindowMode ¶
func WindowMode(w windowMode) Option
WindowMode sets the window mode on the application.
type PixelBuffer ¶
type PixelBuffer struct { // Pix holds the image's pixels, in R, G, B, A order. Pix []uint8 // Width and Height of the image's bounds Width, Height int }
PixelBuffer is an in-memory (RGBA) image.
type Plugin ¶
type Plugin interface { // InitPlugin is called during the startup of the flutter application. The // plugin is responsible for setting up channels using the BinaryMessenger. // If an error is returned it is printend the application is stopped. InitPlugin(messenger plugin.BinaryMessenger) error }
Plugin defines the interface that each plugin must implement. When InitPlugin is called, the plugin may execute setup operations. The BinaryMessenger is passed to allow the plugin to register channels. A plugin may optionally implement PluginGLFW.
type PluginGLFW ¶
type PluginGLFW interface { // Any type inmplementing PluginGLFW must also implement Plugin. Plugin // InitPluginGLFW is called after the call to InitPlugin. When an error is // returned it is printend the application is stopped. InitPluginGLFW(window *glfw.Window) error }
PluginGLFW defines the interface for plugins that are GLFW-aware. Plugins may implement this interface to receive access to the *glfw.Window. Note that plugins must still implement the Plugin interface. The call to InitPluginGLFW is made after the call to InitPlugin.
PluginGLFW is separated because not all plugins need to know about glfw, Adding glfw.Window to the InitPlugin call would add glfw as dependency to every plugin implementation. Also, this helps in a scenarion where glfw is moved into a separate renderer/glfw package.
The PluginGLFW interface is not stable and may change at any time.
type PluginTexture ¶
type PluginTexture interface { // Any type inmplementing PluginTexture must also implement Plugin. Plugin // InitPluginTexture is called after the call to InitPlugin. When an error is // returned it is printend the application is stopped. InitPluginTexture(registry *TextureRegistry) error }
PluginTexture defines the interface for plugins that needs to create and manage backend textures. Plugins may implement this interface to receive access to the TextureRegistry. Note that plugins must still implement the Plugin interface. The call to PluginTexture is made after the call to PluginGLFW.
PluginTexture is separated because not all plugins need to send raw pixel to the Flutter scene.
type Texture ¶
type Texture struct { ID int64 // contains filtered or unexported fields }
Texture is an identifier for texture declaration
func (*Texture) FrameAvailable ¶
FrameAvailable mark a texture buffer is ready to be draw in the flutter scene
func (*Texture) Register ¶
func (t *Texture) Register(handler ExternalTextureHanlderFunc) error
Register registers a textureID with his associated handler
func (*Texture) UnRegister ¶
UnRegister unregisters a textureID with his associated handler
type TextureRegistry ¶
type TextureRegistry struct {
// contains filtered or unexported fields
}
TextureRegistry is a registry entry for a managed Texture.
func (*TextureRegistry) NewTexture ¶
func (t *TextureRegistry) NewTexture() Texture
NewTexture creates a new Texture
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package embedder wraps the Flutter Embedder C API to Go.
|
Package embedder wraps the Flutter Embedder C API to Go. |
internal
|
|
debounce
Package debounce provides a debouncer func.
|
Package debounce provides a debouncer func. |
opengl
Package opengl wraps the go-gl/gl OpenGL bindings with a compile-time OpenGL version selector.
|
Package opengl wraps the go-gl/gl OpenGL bindings with a compile-time OpenGL version selector. |
Package plugin contains message codecs, method codecs and channel implementations which allow plugins to communicate between the flutter framework and the host (Go).
|
Package plugin contains message codecs, method codecs and channel implementations which allow plugins to communicate between the flutter framework and the host (Go). |