我正在使用Flutter Icon Package 在旧版本中是通过String参数加载图标的 像这样:
Old Version works fine with late binding:
Icon(Ionicons.getIconData("ios-search"));
Icon(AntDesign.getIconData("stepforward"));
Icon(FontAwesome.getIconData("glass"));
一切正常,但是由于图标是通过字符串加载的,因此编译器不知道运行时使用了哪些图标。我认为这意味着摇树将不起作用。这也意味着所有图标都将出现在代码中,并使apk变得不必要。
报价: 树在颤抖。在计算中,摇树是一种消除死代码的技术,当将用ECMAScript方言(如Dart,JavaScript或TypeScript)编写的代码优化到由网络浏览器加载的单个包中时,将应用树震动。
在该库的新版本中,所有图标都是静态的,是的,编译器可以使用摇树,但我使用字符串名称来描述插件API中的图标。那只是意味着我不能再使用该库了。在第一种情况下,我实现了一个缓存代码,仅将图标加载一次。
New version works fine with tree-shaking:
Icon(AntDesign.stepforward),
Icon(Ionicons.ios_search),
Icon(FontAwesome.glass),
问题是。我想念什么吗?我该怎么办?后期绑定和摇树。也许代码生成?更好的主意?