go Hover


Run Flutter apps on the desktop with hot-reload
在桌面上运行flutter应用程序 可热重新加载
Hover is a simple build tool to create Flutter desktop applications.
Hover is brand new and under development, it should be considered alpha.
Anything can break, please backup your data before using hover
Hover is part of the go-flutter project.
Please report issues at the go-flutter issue tracker.

Install Hover

Hover uses Go to build your Flutter application to desktop
Hover itself is also written using the Go language.
You will need to install go on your development machine.
Then install hover like this
go get -u github.com/go-flutter-desktop/hover
If you get this error: cmdApp.ProcessState.ExitCode undefined (type *os.ProcessState has no field or method ExitCode),
then update Go to at least version 1.12.
Run the same command to update when a newer version becomes available

Install Hover dependencies

You need to make sure you have a C compiler.
The recommended C compiler are documented here
//github.com/golang/go/wiki/InstallFromSource#install-c-tools
You need to make sure you have dependencies of GLFW
On macOS, you need Xcode or Command Line Tools for Xcode (xcode-select --install) for required headers and libraries.
On Ubuntu/Debian-like Linux distributions, you need libgl1-mesa-dev xorg-dev packages.
On CentOS/Fedora-like Linux distributions, you need libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel mesa-libGL-devel libXi-devel packages.
See here for full details
//www.glfw.org/docs/latest/compile.html#compile_deps

Getting started with an existing Flutter project

This assumes you have an existing flutter project which you want to run on desktop.
If you don't have a project yet, follow the flutter tutorial for setting up a new project first.
Init project for hover
cd into a flutter project.
cd projects/simpleApplication
The first time you use hover for a project, you'll need to initialize the project for desktop.
An argument can be passed to hover init to set the project path.
This is usually the path for your project on github or a self-hosted git service.
If you are unsure, use hover init, the generated path can always be changed later.
hover init github.com/my-organization/simpleApplication
This creates the directory go and adds boilerplate files such as Go code and a default logo.
Make sure you have the following main_desktop.dart in the root librairie of your application.
It's the following code before runApp(..) that makes Flutter run on other platforms:
debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia;
Optionally, you may add plugins to go/cmd/options.go
Optionally, change the logo in go/assets/logo.png, which is used as icon for the window

Run with hot-reload

To run the application and attach flutter for hot-reload support:
hover run
The hot-reload is manual because you'll need to press 'r' in the terminal to hot-reload the application.
By default, hover uses the file lib/main_desktop.dart as entrypoint. You may specify a different endpoint by using the --target flag.
If you want to integrate go-flutter with VSCode, read this issue

Build standalone application

To create a standalone release (JIT mode) build run this command:
hover build linux # or darwin or windows
You can create a build for any of the supported OSs using cross-compiling which needs
Docker to be installed  //docs.docker.com/install/
Then just run the command from above and it will do everything for you.
The output will be in go/build/outputs/linux or windows or darwin.
To start the binary: (replace yourApplicationName with your app name)
./go/build/outputs/linux/yourApplicationName
It's possible to zip the whole dir go/build/outputs/linux and ship it to a different machine

Packaging

You can package your application for different packaging formats.
First initialize the packaging format:
hover init-packaging linux-snap
Update the configuration files located in go/packaging/linux-snap/to your needs.
Then create a build and package it using this command
hover build linux-snap
The packaging output will be located in go/build/outputs/linux-snap/
To get a list of all available packaging formats run
hover build --help

Fonts

No text visible?
Make sure to use fonts who are included in the flutter assets/fonts system.
The default font for MaterialApp, Roboto, is not installed on all machines.
Issues
Please report issues at the go-flutter issue tracker
官网
//github.com/go-flutter-desktop/hover