Флаттер: как нарисовать иконку Font Awesome? - PullRequest
0 голосов
/ 12 января 2020

Я использую CustomPainter для рисования флаттера согласно этому вопросу: Флаттер: Как нарисовать иконку на холсте?

final icon = Icons.cake;
TextPainter textPainter = TextPainter(textDirection: TextDirection.rtl);
textPainter.text = TextSpan(
    text: String.fromCharCode(icon.codePoint),
    style: TextStyle(fontSize: 20.0, fontFamily: icon.fontFamily));
textPainter.layout();
textPainter.paint(canvas, Offset(200.0, 200.0));

Это работает для значков дизайна материалов. Однако я бы хотел использовать ту же технику для рисования Font Awesome Icons. Я использую пакет font_awesome_flutter 8.5.0 , и это мой код:

final icon = Icon(FontAwesomeIcons.fish, size: 20, color: Colors.teal[700]);
TextPainter textPainter = TextPainter(textDirection: TextDirection.rtl);
textPainter.text = TextSpan(
    text: String.fromCharCode(icon.codePoint),
    style: TextStyle(fontSize: 20.0, fontFamily: icon.fontFamily));
textPainter.layout();
textPainter.paint(canvas, Offset(200.0, 200.0));

Я получаю сообщение из IDE о том, что "getPoint 'codePoint" не является определен для класса 'Icon' ". Как я могу это исправить, пожалуйста?

1 Ответ

2 голосов
/ 12 января 2020

Спасибо @pskink за помощь в выяснении этого ответа:

final fishCodePoint = FontAwesomeIcons.fish.codePoint;
print('The codePoint is $fishCodePoint');
final fishFontPackage = FontAwesomeIcons.fish.fontPackage;
print('The fontPackage is $fishFontPackage');
final fishFontFamily = FontAwesomeIcons.fish.fontFamily;
print('The fontFamily is $fishFontFamily');

TextPainter textPainter = TextPainter(textDirection: TextDirection.rtl);
textPainter.text = TextSpan(
    text: String.fromCharCode(fishCodePoint),
    style: TextStyle(
        fontSize: 40.0,
        fontFamily: fishFontFamily,
        package: fishFontPackage));

textPainter.paint(canvas, Offset(50.0, 50.0));
...