几个月前的东西,现在记录一下:用Go写的跨平台软件

·GUI ·Fyne ·跨平台 ·gomobile

2023-08-27
本人密码老是会忘记,尤其是现在各种网站很多,需要你微信扫码、邮箱注册,很多名不见经传的网站、软件用了一次就丢了,但是等到下次需要的时候往往忘记密码不得不重新注册、重置,很是烦人。于是就想写个归类密码整理的软件。

因为我电脑用的多,所以一开始不考虑移动端,毕竟PC是第一生产力,但是有的时候不可能电脑都在身边,而且打开记录账号信息不如移动手机快捷,于是又考虑移动端。思前想后,一开始已经想用Flutter来编写,但觉得没必要,加上喜欢用Go写代码,于是看了一圈Go的GUI框架,最后选定了Fyne

Fyne能跨所有平台,除了Web端(也行,但如同没有),而且它简洁直接,虽然有挺多不足,尤其在移动端BUG蛮多(都被我反其道而行之的方式暂时解决),但写一些桌面端 中小工具、移动端 小工具,已然足够了。

→ 对于想用Golang编写轻量级GUI的朋友,Fyne是个较好的选择。本人前前后后用了两周时间完成了Pasecret,都是边看Fyne官方文档和Github Issue边实践的。它很容易,大家也可以看Pasecret源码来解决一些坑,视频介绍可以看我B站上的讲解:【用Go写的跨平台GUI软件:能够在移动和桌面全平台运行,以及对于fyne框架的一些踩坑讲解】

优点:

  • 简单,出界面快,可定义主题样式,可设置字体,自动切换白天暗黑模式
  • 跨全平台,尤其桌面端使用
  • 可以借助fyne cli生成跨平台包括移动端的程序,即使不使用fyne的组件创建用户界面...比如,你可以用它生成一个在移动端能运行的服务,而不需要你考虑gomobile..


现在直截了当说一下缺点:
  • 移动端不支持导航,虽然fyne能够自适应尺寸,但是仍具有桌面端的窗口关闭按钮,你返回直接回到手机桌面了,懂我意思吧
  • 没测试过ios,仅在安卓,键盘回退键中文会退两个字符。而光标不好调整
  • 移动端卡顿明显,不能够处理长列表滚动数据,最多只能采用分页刷新的解决方案,桌面端倒是算正常,能够接受
  • fyne的API非常简单,新手入门其实也很容易,出内容是很快的,它设置UI的方式类似winform和java jwt swing,创建面板、添加子组件、设置水平啊还是垂直排列等等。另外,更新数据比如List、tree组件,它提供的方法更新数据非常难受,写起来太麻烦。你可能会步入在一层层回调函数上处理业务的情况,而且table表格组件太差
  • fyne跟大多数跨平台框架一样,只提供UI,提供IO事件响应、存储数据这些最基本的功能,底层API比如调用相机是没有的。
  • 接上条,fyne提供的创建数据文件的方法,在安卓它创建的路径父目录是不存在的,所以安卓端调式会看到拒绝访问的错误,这是bug,因此你得自己先创建一个目录...
  • 一些组件有小bug,比如AppTabs组件,我的第2个页签隔一段时间会白屏,我只能开个gorountine监听重新刷新,还有它的NewImageFromURI加载网络图片,设置canvas.ImageFillOriginal有时候会显示不出来...
使用的fyne版本 v2.3.5

可以在Github上查看它的源码和下载安装包:github-pasecret

来自:Golang
更新于2024-02-09 20:58:41 发表于2024-02-09 19:55:11


发表您的评论





公元2024年甲辰龍年,平安健康、龍行天下!