flutter iconfont 自动构建脚本、和iconfont没办法设置颜色问题解决
说明
分享一个dart脚本,用于将iconfont的在线css链接,自动下载里面的ttf文件到本地 和 自动格式化name和十六进制值。
/// iconfont 处理脚本
import 'dart:ffi';
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'dart:io';
String cssUrl = 'https://at.alicdn.com/t/c/font_4169331_7nid1mbh75g.css';
void main () async {
// 第一步:下载 css 文件
final res = await http.get(Uri.parse(cssUrl));
// 第二步:解析内容
final String contentText = utf8.decode(res.bodyBytes);
print(contentText);
// 第三步:获取ttf地址
RegExp ttfRegexp = RegExp(r"url\('([^'] \.ttf\?t=\d )'\)");
Iterable<Match> ttfMatches = ttfRegexp.allMatches(contentText);
final String ttfUrl = 'https:${ttfMatches.first.group(1)!}';
print(ttfUrl);
// 第四步:下载ttf文件,并保存到当前目录里,命名为iconfont.ttf
final ttfRes = await http.get(Uri.parse(ttfUrl));
String dirPath = File(Platform.script.toFilePath()).parent.path;
var ttfFile = File('$dirPath/iconfont.ttf');
await ttfFile.writeAsBytes(ttfRes.bodyBytes);
// 第五步:解析css文件里的
RegExp regex = RegExp(r'\.(\w ):before[\s\S]*?content:\s*"\\([a-zA-Z0-9] )');
Map<String, String> iconMap = {};
Iterable<Match> matches = regex.allMatches(contentText);
for (Match match in matches) {
String className = match.group(1)!;
String content = match.group(2)!;
iconMap[className] = '0x$content';
}
var mapFile = File('$dirPath/icon_map.dart');
String generateMapCode(Map<String, String> map) {
String mapEntries = map.entries.map((entry) => " '${entry.key}': ${entry.value},").join('\n');
return '''Map<String, int> iconMap = {
$mapEntries
};
''';
}
String mapFileContent = generateMapCode(iconMap);
mapFile.writeAsStringSync(mapFileContent);
}
icon_map.dart里面只放了一个map对象,供index组件使用
自定义字体 iconfont 设置颜色无效
我使用iconfont里的ttf字体时,总是设置颜色无效
最后发现是这两处需要修改一下
1、项目设置里把彩色取消掉
2、批量操作 - 全选 - 批量去色
总结
1、该脚本大部分代码都是chatGPT写的,比如正则、自动构建dart文件,不得不感慨gpt实在太强了,在学习一门新语言时,他就好像一个导师一样,不管你问什么问题他都会解答,比加什么学习群都高效和答案更精准。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbbafg
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01