build method
Generates the outputs for a given BuildStep
.
Implementation
@override
FutureOr<void> build(BuildStep buildStep) async {
try {
for (final pack in iconsModel.packs) {
final svgMap = _getSvgMap(svgDirectoryPath: pack.sourceFolderPath);
final svgToOtfResult = svgToOtf(
svgMap: svgMap,
fontName: pack.fontName,
);
final fontFilePath =
'${iconsModel.outputFontFolder}/${pack.fontFileName}';
final fontByteData =
OTFWriter().write(svgToOtfResult.font).buffer.asUint8List();
final newFontAsset = AssetId(buildStep.inputId.package, fontFilePath);
await buildStep.writeAsBytes(newFontAsset, fontByteData);
final classFilePath =
'${iconsModel.outputFileFolderPath}/${pack.classFileName}';
final generatedClass = _generateFontClass(
glyphList: svgToOtfResult.glyphList,
familyName: svgToOtfResult.font.familyName,
className: pack.fontName,
fontFileName: fontFilePath,
);
final newFileAsset = AssetId(buildStep.inputId.package, classFilePath);
await buildStep.writeAsString(newFileAsset, generatedClass);
}
return null;
} catch (e) {
developer.log(e.toString());
}
}