绑定资源
基于Go的应用程序通常构建为单个二进制可执行文件,Fyne应用程序也是如此。一个文件使分发和安装我们的软件更容易。不幸的是,GUI应用程序通常需要额外的资源来呈现用户界面。为了应对这一挑战,Go应用程序可以将资产绑定到二进制文件中。Fyne工具包更喜欢使用“Fyne捆绑包”,因为它具有我们将在下面探讨的各种好处。
捆绑资产的基本方法是执行“fyne捆绑”命令。这个工具有各种参数来定制输出,但在它的基本形式中,要捆绑的文件将被转换为Go源代码,可以构建到应用程序中。
go
$ ls
image.png main.go
$ fyne bundle image.png >> bundled.go
$ ls
bundled.go image.png main.go
$
bundled.go的内容将是一个资源变量列表,然后我们可以在代码中访问这些变量。例如,上面的代码将生成包含以下内容的文件:
go
var resourceImagePng = &fyne.StaticResource{
StaticName: "image.png",
StaticContent: []byte{
...
}}
如您所见,默认命名为“resource<Name>.<Ext>”。此文件中使用的名称和包可以在命令参数中自定义。然后,我们可以使用这个名称,例如,在画布上加载图像:
go
img := canvas.NewImageFromResource(resourceImagePng)
fyne资源只是具有唯一名称的字节集合,因此它可以是字体、声音文件或您希望加载的任何其他数据。此外,还可以使用-append参数将许多资源捆绑到一个文件中。如果要绑定多个文件,建议将命令保存在shell脚本中,例如此文件gen.sh:
go
#!/bin/bash
fyne bundle image1.png > bundled.go
fyne bundle -append image2.png >> bundled.go
如果随后更改任何资产或添加新资产,则可以更新此文件并运行一次以更新bundled.go文件。然后,您应该将bundled.go添加到版本控制中,这样其他人就可以构建您的应用程序,而无需运行“fyne bundle”。还可以添加gen.sh,以便其他人可以在需要时重新生成绑定的资源。