loadFontsFromFontsDir function
Assumes a fonts dir in root of project
Implementation
@visibleForTesting
Map<String, List<Future<ByteData>>> loadFontsFromFontsDir([Package? package]) {
final fontFamilyToData = <String, List<Future<ByteData>>>{};
final currentDir = path.dirname(Platform.script.path);
final fontsDirectory = path.join(
currentDir,
package == null || package.relativePath == null
? 'fonts'
: '${package.relativePath}/fonts',
);
final prefix = package == null || package.name == null
? ''
: 'packages/${package.name}/';
for (final file in Directory(fontsDirectory).listSync()) {
if (file is File) {
final fontFamily =
prefix + path.basenameWithoutExtension(file.path).split('-').first;
(fontFamilyToData[fontFamily] ??= [])
.add(file.readAsBytes().then((bytes) => ByteData.view(bytes.buffer)));
}
}
return fontFamilyToData;
}