上一篇 《Flutter 知识集锦 | Dart 开发命令行工具》 介绍了,如何通过 Dart 开发一个命令行脚本工具。本篇将结合一个具体的场景,介绍一下它的使用。toly 命令行工具目前已经开源并上传到 pub :
github 地址: https://github.com/toly/toly pub 地址: https://pub.dev/packages/toly
安装 toly 工具的命令:
dart pub global activate toly
jvideo
bilibli 视频: https://www.bilibili.com/video/BV1Pa4y127V6/
1. 图标字体工具的使用
我们的目的是通过脚本工具,可以非常便利地使用 iconfont 的图标字体。
| 内置图标 | 自定义图标 | | ——————————————————————————————————————————————————————————— | ———————————————————————————————————————————————————————————- | | 
讯享网 |
|
将下载的字体图标放入指定目录后,命令行输入: toly icon ,即可做到
- [1]. 自动提取 压缩包的字体文件
- [2]. 自动生成 字体图标的访问代码
- [3]. 自动配置 pubspec.yaml 文件的字体图标节点

也就是说,对于开发者而言,只要准备好下载的资源,然后执行命令,就可以调用生成代码的常量,展示对应的图标。这样将极大地方便开发者对字体图标的使用:


通过修改配置信息,也可以实现:一个项目中使用多个图标字体资源的目的

2. toly icon 配置方式
另外, toly icon 支持在 Flutter 项目中通过 ,配置一些路径信息。如果不指定,会使用默认值:
3. 图标字体资源准备
在 iconfont.cn 挑选图标,通过加入购物车,创建项目:

在项目界面中,下载压缩包,将资源放在指定目录即可:

4. toly icon 的代码实现
在前在 FlutterUnit 里已经实现过交互界面的字体图标生成工具,这里只需要将用户的输入转换读取配置,在命令行执行而已,总体来说并不是非常困难。

对于图标字体的代码生成,最早可以追溯到我接触 Flutter 的第七天(2018-12-22):
- 《Flutter第7天–字体图标+综合小案例+Android代码交互》
这里在 toly 项目中添加了 src/icon 文件夹,用于放置 icon 命令处理的代码:


在 的 mian 函数中,顺便加了查看版本信息和帮助信息的功能。当 的第一个参数是 时,通过 方法完成任务:
void main(Listarguments) { if (arguments.isEmpty) { print(getHelpText()); return; }
讯享网String cmd = arguments.first; if (cmd == ‘-V’ || cmd == ‘–version’) { print(‘toly version: \(kVersion'); return; }</p> <p>if (cmd == 'icon') { const IconGen().gen(); return; } ```</p> <hr /> <p>IconGen 中创建 ,并通过 读取配置信息,得到 配置对象,最后通过解析器的 gen 方法处理具体逻辑:</p> <p>```dart class IconGen{ const IconGen();</p> <p>void gen(){ final IconFontClassParser parser = IconFontClassParser(); var configResult = ConfigReader().readIconConfig(); IconFontGenConfig? config = configResult.\)1; if (config == null) { print(configResult.\(2); return; } parser.gen(config); print('生成代码成功!\){config.distFilePath}’); } } ```
配置读取器中,首先查看当前文件夹下是否有 ,来确定是否是 Flutter 项目,如果没有,返回并输出错误信息;另外需要校验一下下载的字体资源是否存在:```dart class ConfigReader { (IconFontGenConfig?, String) readIconConfig() { String projectPath = Directory.current.path; File yamlFile = File(path.join(projectPath, ‘pubspec.yaml’)); if (!yamlFile.existsSync()) { return (null, ‘no pubspec.yaml in current Directory’); } dynamic doc = loadYaml(yamlFile.readAsStringSync()); dynamic configs = doc?[‘toly’]?[‘icon’]; String assetsDist = configs?[‘assetsdir’]??‘assets/iconfont’; String fileDist = configs?[‘distfile’]??‘lib/tolygen/tolyicon.dart’; String srcZip = configs?[‘src_zip’]??‘assets/download.zip’;
} } ```
解析器生成代码的部分在 《FlutterUnit 工具集录 | IconFont 类代码自动生成》 中有详细介绍,这里就不赘述了。
可以看出 dart 的命令行工具在 Flutter 项目中使用是非常优雅的,自动生成一些固定的代码非常方便。当然你也可以使用 dart 来其他有趣便捷地小工具。比如计算两个日期之间的期间间隔、获取一个文件的 MD5 、解析一个 json 文件,甚至通过创建模板项目等。希望 toly 的命令行工具可以给大家更多启发,那本文就到这里,谢谢观看 ~
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/183717.html