PowerRename功能太少,我用Flutter自己写了一个

2,826 阅读4分钟

PowerRename 是微软推出的 PowerToys 工具中的一个重命名功能,以前我一直都只是用来批量删除文件名中的一部分。

微信截图_20230328115451.png

这次我删除一部分后文件名都一样了,里面虽然有一个贴心的加上后缀的功能,但是延续的是微软一贯风格的 (数字) ,看起来未免有点丑陋🤷‍♂️。我想要的直接就是数字按序列结尾。然后转身在网上搜了一下这方面的软件,下了其中一个,可以添加很多的规则,但是学习成本有点高。

所以我想就自己做一个。

离上一次使用 Flutter Desktop 已经过去一年了。那时候想写一个写小说的电脑端软件,但是 Flutter 桌面端在 TextField 中使用鼠标滚轮体验太差,滑动太慢。还有一个原因,我想自己设定一种格式,查了资料没找到能看得懂的,就放弃了。之后使用 Flutter Desktop 也只是更新一下 flutter_desktop_test 的依赖。

2023年9月,我把软件的代码从 Provider 换成 Riverpod 重构完成。

之前为了方便,使用 Provider 一个文件代码写到了900多行,使用 Riverpod 后代码分为了多个文件,看起来更清晰也更放松。

分割线---

因为 Flutter 的方便,写了四十多个小时就完成了。本来很开心地写起了使用说明,突然遇到了bug!!!又搞了我好久😑。

本来兴致勃勃,现在只剩下烦躁🤡。以下就是软件的主界面。

微信截图_20230328115251.png

在开发的过程中遇到了一些问题。

因为我添加了英语,所以在切换语言的时候会有以下状况出现:

10.gif

我使用的事 Provider,虽然能够实时切换成另一种语言,但是只能切换能看得到的地方🙁。其他页面没法自动刷新,所以没有改变语言。我最初的设计设置是在弹窗里的,但是弹窗大背景是半透明的,然后用户就会看到上面是一种语言,下面的又是另一种语言。

为了解决这个问题,我把返回按钮的方法做成了切换成另一个界面,刚开始能解决语言切换的问题,但是当我在设置上面添加了“整理文件”的功能后,这个功能界面的语言还是无法转换,于是就把返回按钮的方法改了回去,在后面加了一个“重启生效”。当时还想加一个“重启程序”的按钮,但是不会做😥。

虽然并不需要真的重启。我觉得用户看到这个后,用户发现“原来不用重启也能生效啊😲”,可能会从本来的“改了怎么其他界面没变😠”的愤怒变成震惊🤣。

程序里有一个检测新版本的功能,我使用的是读取 Gitee 仓库里的 version.json 文件。本来还想加个读取 Github 仓库中 version.json 文件,但是一直连接失败,能在浏览器打开,但是无法在程序读取,说是网络的问题就放弃了。

微信截图_20230328122259.png

b.gif

Flutter 开发的程序,因为只能以小写+下划线命名,所以默认打包出来的程序名称也是项目名称。不过以下滑线命名软件看起来也太格格不入了。最后通过大佬提示,可以在 Ruuner.rc 中更改。

说了这么多,大家最关心的还是源码的问题。本项目的所有代码已在 Gitee 和 Github 开源:

也许可能大概存在一些bug,在这个项目上花费的时间也有点多,在主要功能的代码中我都添加了注释。如果发现了问题各位可以自主修复一下😃。

该项目只在 Win10 和 Ubuntu 测试过,macOS 需要自行测试,不出意外应该不用特别配置某个第三方库。

因为使用了 flutter_distributor,打包的配置文件已经配置好了。想打包的要依次执行一下命令:

dart pub global activate flutter_distributor
npm install -g appdmg
flutter_distributor package --platform macos --targets dmg

好了,就是这些。代码可能写得不好,各位大佬可以优化一下。