build method

  1. @override
FutureOr<void> build(
  1. BuildStep buildStep
)

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