# YX Icon Fonts 学习官OA系统图标字体库,基于iconfont.ttf和iconfont.json生成的Flutter图标库。 ## 特性 - 🎨 包含50+个精心设计的图标 - 📱 支持Flutter应用 - 🎯 类型安全的图标使用 - 📦 轻量级,无额外依赖 - 🔧 易于集成和使用 - ⚡ 自动化生成脚本 ## 安装 在您的`pubspec.yaml`文件中添加依赖: ```yaml dependencies: yx_icon_fonts: ^1.0.0 ``` 然后运行: ```bash flutter pub get ``` ## 使用方法 ### 基本用法 ```dart import 'package:flutter/material.dart'; import 'package:yx_icon_fonts/yx_icon_fonts.dart'; class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Icon( YXIconFonts.iconMsgContacts, size: 24, color: Colors.blue, ); } } ``` ### 使用YXIcon组件 ```dart import 'package:flutter/material.dart'; import 'package:yx_icon_fonts/yx_icon_fonts.dart'; class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return YXIcon( YXIconFonts.iconMsgContacts, size: 24, color: Colors.blue, ); } } ``` ### 在AppBar中使用 ```dart AppBar( title: Text('我的应用'), actions: [ IconButton( icon: Icon(YXIconFonts.iconMsgSearch), onPressed: () { // 搜索操作 }, ), ], ) ``` ## 可用图标 ### 消息相关图标 - `YXIconFonts.iconMsgContacts` - 联系人 - `YXIconFonts.iconMsgViedo` - 视频 - `YXIconFonts.iconMsgSearch` - 搜索 - `YXIconFonts.iconMsgCall` - 通话 - `YXIconFonts.iconMsgPhoto` - 照片 - `YXIconFonts.iconMsgImg` - 图片 - `YXIconFonts.iconMsgFile` - 文件 ### 箭头相关图标 - `YXIconFonts.icon32Arrowright` - 右箭头32 - `YXIconFonts.icon44Arrowleft` - 左箭头44 - `YXIconFonts.icon44Arrowright` - 右箭头44 - `YXIconFonts.icon24Arrowleft` - 左箭头24 - `YXIconFonts.icon24Arrowdown` - 下箭头24 - `YXIconFonts.icon44Arrowright1` - 右箭头44(1) ### 编辑相关图标 - `YXIconFonts.icon44Edit` - 编辑44 - `YXIconFonts.icon24Edit` - 编辑24 - `YXIconFonts.icon36Editline` - 编辑线36 ### 个人中心相关图标 - `YXIconFonts.icon44MePassword` - 密码 - `YXIconFonts.icon44MeHelp` - 帮助 - `YXIconFonts.icon44MeVersion` - 版本 - `YXIconFonts.icon44MePrivacy` - 隐私 - `YXIconFonts.icon44MeUser` - 用户 - `YXIconFonts.icon44MeSafe` - 安全 - `YXIconFonts.icon44MePhone` - 手机 ### 功能图标 - `YXIconFonts.icon32Filter` - 筛选 - `YXIconFonts.icon36Question` - 问题 - `YXIconFonts.icon36Onlysee` - 仅查看 - `YXIconFonts.icon36Hint` - 提示 - `YXIconFonts.icon24Switch` - 切换 ### 操作图标 - `YXIconFonts.icon44Delete` - 删除44 - `YXIconFonts.icon36Delete` - 删除36 - `YXIconFonts.icon24Delete` - 删除24 - `YXIconFonts.icon44More` - 更多 - `YXIconFonts.icon44More2` - 更多2 - `YXIconFonts.icon24Copy` - 复制 - `YXIconFonts.icon44Share` - 分享 - `YXIconFonts.icon44Calendar` - 日历 ### 添加相关图标 - `YXIconFonts.icon24Add` - 添加24 - `YXIconFonts.icon24Plus` - 加号 - `YXIconFonts.icon44Add` - 添加44 - `YXIconFonts.icon32Add` - 添加32 ### 消息功能图标 - `YXIconFonts.icon56Msgadd` - 消息添加 - `YXIconFonts.icon56Msgface` - 消息表情 - `YXIconFonts.icon56Msgvoice` - 消息语音 ### 其他图标 - `YXIconFonts.icon36Team` - 团队 - `YXIconFonts.icon32Student` - 学生 - `YXIconFonts.icon44Keyboard` - 键盘 - `YXIconFonts.icon24Minus` - 减号 - `YXIconFonts.icon44Quitlite` - 退出轻量 - `YXIconFonts.icon32Quit` - 退出32 - `YXIconFonts.icon44Quit` - 退出44 ## 示例 运行示例应用查看所有图标: ```bash cd example flutter run ``` ## 自定义 ### 修改图标大小 ```dart Icon( YXIconFonts.iconMsgContacts, size: 48, // 自定义大小 ) ``` ### 修改图标颜色 ```dart Icon( YXIconFonts.iconMsgContacts, color: Colors.red, // 自定义颜色 ) ``` ### 在主题中使用 ```dart Theme( data: Theme.of(context).copyWith( iconTheme: IconThemeData( color: Colors.blue, size: 24, ), ), child: Icon(YXIconFonts.iconMsgContacts), ) ``` ## 开发 ### 自动化生成脚本 项目提供了 `generate.sh` 脚本来自动化图标数据的生成过程。 #### 脚本功能 - 🔄 自动生成图标数据文件 (`lib/src/yx_icon_fonts_data.dart`) - 📝 自动生成示例文件 (`example/lib/icons.dart`) - ✅ 错误检查和验证 - 🎨 彩色输出和进度提示 #### 使用方法 ```bash # 生成所有文件(默认) ./generate.sh # 只生成图标数据 ./generate.sh icons # 只生成示例文件 ./generate.sh example # 显示帮助信息 ./generate.sh help ``` #### 脚本选项 | 选项 | 功能 | 生成文件 | |------|------|----------| | `all` (默认) | 生成所有文件 | `lib/src/yx_icon_fonts_data.dart` + `example/lib/icons.dart` | | `icons` | 只生成图标数据 | `lib/src/yx_icon_fonts_data.dart` | | `example` | 只生成示例文件 | `example/lib/icons.dart` | | `help` | 显示帮助信息 | - | #### 使用示例 ```bash # 首次使用,确保脚本有执行权限 chmod +x generate.sh # 生成所有文件 ./generate.sh # 只更新图标数据(当修改了 iconfont.json 时) ./generate.sh icons # 只更新示例文件(当修改了图标数据时) ./generate.sh example ``` #### 脚本输出示例 ``` ℹ️ 开始生成所有文件... ℹ️ 正在生成图标数据... ✅ 图标数据生成完成 ℹ️ 正在生成示例文件... ✅ 示例文件生成完成 ✅ 所有文件生成完成! ``` ### 项目结构 ``` yx_icon_fonts/ ├── lib/ │ ├── yx_icon_fonts.dart # 主库文件 │ ├── main.dart # 库入口文件 │ └── src/ │ ├── yx_icon_data.dart # 图标数据类 │ ├── yx_icon.dart # 图标组件 │ └── yx_icon_fonts_data.dart # 图标常量定义(自动生成) ├── fonts/ │ └── iconfont.ttf # 字体文件 ├── scripts/ │ ├── generate_icons.dart # 图标数据生成脚本 │ ├── generate_example.dart # 示例文件生成脚本 │ └── utils.dart # 共享工具函数 ├── example/ │ └── lib/ │ ├── main.dart # 示例应用 │ └── icons.dart # 示例图标文件(自动生成) ├── generate.sh # 自动化生成脚本 ├── iconfont.json # 图标配置数据 ├── pubspec.yaml # 包配置 └── README.md # 项目文档 ``` ### 更新图标 1. 替换 `fonts/iconfont.ttf` 文件 2. 更新 `iconfont.json` 文件 3. 运行生成脚本: ```bash ./generate.sh icons ``` 4. 更新版本号 ### 开发工作流 1. **修改图标源文件**: - 更新 `fonts/iconfont.ttf` - 更新 `iconfont.json` 2. **生成代码**: ```bash ./generate.sh ``` 3. **测试**: ```bash flutter analyze flutter test cd example && flutter run ``` 4. **发布**: ```bash flutter pub publish ``` ## 许可证 MIT License ## 贡献 欢迎提交Issue和Pull Request! ## 更新日志 ### 1.0.0 - 初始版本 - 包含50+个图标 - 支持Flutter 3.0+ - 添加自动化生成脚本 - 优化项目结构和文档