loadFontsFromFontsDir function

  1. @visibleForTesting
Map<String, List<Future<ByteData>>> loadFontsFromFontsDir([
  1. Package? package
])

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;
}