搜索插件、代码仓与 APP 分类

插件详情v1.0.4

icons_helper

当在编译时无法确定所需的具体图标时,此功能可在运行时提供对完整图标库和 FontAwesomeIcons 的访问。

近 30 天下载
88
喜欢数
27
Pub 分数
40

安装插件

flutter pub add icons_helper

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

IconsHelper 是一个 Flutter/Dart 包,可实现对全面图标库的运行时访问,包括标准图标和 FontAwesome 图标。当所需图标在应用程序执行期间动态确定而非在编译时已知时,该工具特别有用。这种灵活性使开发者能够构建更灵活的用户界面,例如可主题化的图标选择器或基于用户输入动态渲染图标的界面。该包通过提供统一接口来访问广泛的图标集,简化了图标管理,无需单独导入每个图标集。

适合场景

  • 动态图标选择
  • 基于主题的图标渲染
  • 运行时图标查找
  • 自定义图标选择组件
  • 可扩展的图标管理

主要特点

  • 对图标和 FontAwesomeIcons 的完全访问权限
  • 运行时图标分辨率
  • 无需静态导入
  • 动态使用的简单API
  • 支持多个图标库

适合对象

  • 具有动态 UI 的应用
  • 图标选择器界面
  • 主题自定义功能
  • 需要灵活图标处理的开发者
  • 项目避免在编译时声明图标

使用建议

  • 如果未捆绑,使用 FontAwesomeIcons 需要互联网连接
  • 动态解析带来的轻微开销
  • 不适合性能要求高的图标渲染
  • 限于预定义的图标集
  • 可能会略微增加包大小

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

icons_helper

This package's use case is to provide access to the full library of Icons and FontAwesomeIcons (currently FontAwesome 9 for the most part, although a few new icons need some addition/changes) at runtime when the specific icons needed are not known at compile time. As such, all Tree Shaking is totally worked around/defeated for Icons and FontAwesomeIcons, so know that before you use the library. But since in our application, for example, the icon names come in from our backend and we don't want to have to re-release each time it specifies a new icon, we are GOOD with that. This is intentional so we can specify a new icon to be displayed just by sending that new text string in our push notification/record. This is a convenience package that provides bracket notiation access to Material Design Icons and Font Awesome Flutter icons (via @brianegan's font_awesome_flutter package). For now, I have just statically generated the Map to map string names to member names. This means any new icons won't be automatically discovered. There's a way to use codegen and mirror in a non-flutter dart app to generate this and then output/maintain them, but just using a google sheet and cut and pasting was faster for something I personally don't need to update often. That sheet is here at https://docs.google.com/spreadsheets/d/1IpWJytpkrJI9_9hwPKY5oXJLRLGjQuG3pUP7eUIqHn4/edit?usp=sharing. I started writing such a utility but gave up because it wasn't worth the time.

Thanks & Contributions

Many thanks to Dennis Bappert (@dennisbappert) and S McDowall (@sjmcdowall) for updates to this and sourcing back their changes publicly and in the true spirit of open source. This includes their fixes.

Using

The methods you may want to consider using include:

getIconUsingPrefix(name: "PREFIX.ICON_NAME") - if PREFIX is "fa" or "fontawesome" the icon_name after the "." will be resolved against the font awesome icons first, if that fails, it'll go to Material Design Icons. If there is no PREFIX.ICON_NAME, it'll fail over to just trying to resolve Material First, then Font Awesome.

getIconGuessFavorFA(name:"ICON_NAME") - if there is an icon named ICON_NAME in FA, return that, otherwise, try Material

getIconGuessFavorMaterial(name:"ICON_NAME") - if there is an icon named ICON_NAME in Material Design, return that, otherwise, try FA

All methods will return null if icon doesn't exist.

Yes, this is a quick and dirty library that could use tons of improvement and does a lot of things poorly or doesn't do things. If you want to change/fix/help, submit a PR and I'll def accept all help that I think improves this lib.

I basically wrote this as a hack/work around to https://github.com/flutter/flutter/issues/16189.

所属分类

依赖

依赖清单 1 项

源码仓库

使用此插件的项目

暂无相关数据。