I have an application composed of a number of different Dart and Flutter packages. This has proven useful in that I've been able to move things like fonts, colours and Widgets into an independent style guide package which we can then use across all of our other applications.
Using custom fonts in a package works slightly differently in Flutter as we need to add the assets
directory as a child of lib
rather than a sibling:
…and then register these assets in pubspec.yaml
like so:
assets:
- packages/receipt_widget/assets/fonts/my_font.ttf
// other asset declarations
This, for custom fonts and icons (png, jpg etc) works completely fine. My issue is that the same approach does not work for custom icon fonts.
Steps:
- Generate custom icon font using IcoMoon or Flutter Icon
- Place the generated font into the
assets/fonts
directory as demonstrated above - Place the generated dart file into the
lib
folder - Reference the custom icon in code and place into an
Icon
widget like so:
Icon(MyFontIcon.ic_heart);
For safety I then run flutter clean
and uninstall the app from the device/ emulator before deploying a clean build.
I'm then left with a question mark rather than the referenced icon.
NB. the very same icons work correctly when used in a Flutter application directly rather than in a package.