背景
在开发 flutter 项目时,经常会用到一些图标,这些图标通常是从一些图标库中下载下来的,然后需要把图标svg格式转换成flutter项目中的icon font,这个过程是比较繁琐的,而且如果图标库中的图标有更新,那么还需要手动去下载新的图标,然后再转换,在有了fluttericon.com这个网站之后,这个过程就变得非常简单了。
fluttericon.com 是什么
fluttericon.com 是一个在线的图标管理网站,它提供了大量的免费图标库,可以直接在线检索图标:
![]()
在挑选好所需的图标之后,点击DOWNLOAD按钮,就可以下载一个zip文件,里面包含了字体文件和flutter项目中的icons.dart文件:
![]()
使用
下载下来的zip文件解压之后,里面包含了两个文件夹,一个是fonts文件夹,里面包含了字体文件,my_flutter_app_icons.dart文件,将这两个文件夹拷贝到flutter项目中,然后在pubspec.yaml文件中引入字体文件:
1 | fonts: |
这里的
my_flutter_app是根据 fluttericon.com 网站中自定义的项目名称来的,这里是默认的名称,可以随意修改。
然后在项目中使用这个图标:
1 | import 'package:flutter/material.dart'; |
备份
由于fluttericon.com是使用浏览器cookie来保存用户的图标库,如果清除了cookie,那么之前的图标库就会丢失,所以在使用fluttericon.com的时候,最好将下载的图标库(.zip)备份一下,这样以后就可以直接导入自己的图标库,而不用重新挑选一遍。
导入自定义 SVG
除了自带的图标库之外,fluttericon.com还支持导入自定义的svg文件,但是需要注意的是,导入的必须是compound path svg,而且也不支持类似fill这样的属性,所以在导入之前需要先处理一下svg文件。
碰到的问题
我这里就碰到了一个场景,想在一个SVG文件加上文本,然后导入到fluttericon.com中,但是如果没有做处理的话会报错:
1 | If image looks not as expected please convert to compound path manually. |
因为如果直接编辑的SVG添加文本导出来的实际上是变成了多个path,比如这个:
我在原始的SVG中间添加了一个字,但是导出来的SVG变成了这样:
1 |
|
通过 Adobe Illustrator 处理
我本人对SVG不是很熟悉,网上找了很多资料也没有找到相关的解决方案,最后靠着 AI 和无尽的尝试,总算是盲人摸象的处理出来了,这里记录一下:
- 首先打开
SVG文件,然后把文本添加好,这一步很简单。 - 选中文本,然后
属性->创建轮廓:
- 还是选中文本,然后
路径查找器->轮廓:
- 最后全选所有节点,然后
对象->复合路径->建立:
这个时候再导出SVG文件,可以看到就只保留一条path了:
1 |
|
接下来就可以成功导入到fluttericon.com中了。
总结
折腾了这么久,终于搞定了 fluttericon.com 的图标导入问题!说实话,一开始处理 SVG 文件时还真是让人头大,特别是遇到那些路径格式不兼容的情况。不过通过这次实践,我总结出了一套还算顺手的处理流程,希望能帮其他开发者少走点弯路。
关键点就是:
- SVG 文件预处理很重要,特别是路径格式的转换
- 导入前最好先检查下 SVG 的结构是否规范
- 如果导入失败,99% 都是 SVG 格式的问题
总之,熟悉了这套流程后,处理自定义图标就变得轻松多了。搞定!🚀


