dart Flutter自定义图标字体未从包中显示

ep6jt1vc  于 5个月前  发布在  Flutter
关注(0)|答案(1)|浏览(62)

我在屏幕上显示我的自定义图标字体时遇到麻烦。Android模拟器和iOS模拟器。我通过生成字体的包导入图标。我以前直接在应用程序存储库中从assets/fonts中导入它们。改变的是它们现在来自一个包,它们是otf而不是ttf。但据我所知,当前的Flutter版本应该能够显示otf
下面你可以找到iOS(左侧)和Android(右侧)的屏幕截图。

environment:
  sdk: ">=3.0.0 <4.0.0"

dependencies:
  flutter:
    sdk: flutter
  my_font_package:
    git:
      url: [email protected]:MyOrg/my-font.git
      ref: 0.0.3

flutter:
  fonts:
    - family: My Font
      fonts:
        - asset: packages/my_font_package/fonts/my_font.otf

字符串
当我以任何不同的方式更改otf的路径时,构建编译器将给予预期错误。因此路径是查找文件。

import 'package:my_font_package/my_font.dart';

class MyIcon extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Icon(
      MyFont.eyesolid,
      color: Colors.primary,
      size: 24.0,
    );
  }
}


在font包中:

class MyFont{
  const MyFont._();

  static const iconFontFamily = 'My Font';
  static const iconFontPackage = 'my_font';

  /// Font icon named "__eye-closed__"
  ///
  /// <image width='32px' src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJpY29uIGljb24gaWNvbi1leWUtY2xvc2VkIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMjEgOWMtMi40IDIuNjY3IC01LjQgNCAtOSA0Yy0zLjYgMCAtNi42IC0xLjMzMyAtOSAtNCIvPjxwYXRoIGQ9Ik0zIDE1bDIuNSAtMy44Ii8+PHBhdGggZD0iTTIxIDE0Ljk3NmwtMi40OTIgLTMuNzc2Ii8+PHBhdGggZD0iTTkgMTdsLjUgLTQiLz48cGF0aCBkPSJNMTUgMTdsLS41IC00Ii8+PC9zdmc+'>
  static const IconData eyeclosed = IconData(0xe015,
      fontFamily: iconFontFamily, fontPackage: iconFontPackage);
}


我有flutter clean,清理了该高速缓存,关闭了模拟器并多次重建应用程序。因此,我在这里添加了一个新问题,看看是否有其他方面我错过了。
有趣的方面:Android Studio也不给我给予预览。

也许这给出了正确的方向,或者这是一个分心。谁知道呢?以前的材料设计图标工作得很好。

vcirk6k6

vcirk6k61#

解决方案是棘手的,但在这里可见。
字体本身不是一个包。类被交付给实现。这就是为什么在IconData中定义属性fontPackpage是错误的。
这是错误的,因为类和字体在同一个包中。

static const IconData myIcon = IconData(0xe015,
      fontFamily: iconFontFamily, fontPackage: iconFontPackage);

字符串
它应该是:

static const IconData myIcon = IconData(0xe015,
      fontFamily: iconFontFamily);


结果


的数据

相关问题