generateFlutterClass function

Future<GenerateResult> generateFlutterClass({
  1. required File iconMap,
  2. required String className,
  3. required String? packageName,
  4. required String namingStrategy,
  5. String indent = ' ',
})

Implementation

Future<GenerateResult> generateFlutterClass({
  required File iconMap,
  required String className,
  required String? packageName,
  required String namingStrategy,
  String indent = '  ',
}) async {
  final Map<String, dynamic> icons = jsonDecode(await iconMap.readAsString());

  final dartIconsEntries = icons.entries.map(
    (entry) => someReplace(
      template.icon
          .replaceFirst(
            '%ICON_NAME%',
            namingStrategy == 'snake'
                            ? ReCase(entry.key).snakeCase
                            : ReCase(entry.key).camelCase,
          )
          .replaceFirst(
            '%ICON_CODE%',
            entry.value.toRadixString(16).toString()
          ),
      className: className,
      indent: indent,
    ),
  );

  return GenerateResult(
      someReplace(
        template.base
            .replaceFirst(
              '%PACKAGE%',
              packageName == null
                  ? ''
                  : someReplace(
                      template.package
                          .replaceFirst('%PACKAGE_NAME%', packageName),
                      className: className,
                      indent: indent,
                    ),
            )
            .replaceFirst('%CONTENT%', dartIconsEntries.join('\n')),
        className: className,
        indent: indent,
      ),
      icons.length);
}