generateTheme method

void generateTheme(
  1. String theme,
  2. dynamic value,
  3. String flavor
)

Implementation

void generateTheme(String theme, dynamic value, String flavor) {
  final className = isAllFlavor ? '$flavor $theme' : theme;

  final dir = join(pathThemes, 'src');
  DirectoryHelper.createDir(dir);

  final pathItemTheme =
      join(dir, 'morpheme_theme_${className.snakeCase}.dart');
  if (!exists(pathItemTheme)) {
    final brightness = value['brightness'] == 'dark' ? 'dark' : 'light';
    pathItemTheme.write('''import 'package:flutter/material.dart';

import '../../morpheme_colors/morpheme_colors.dart';
import 'morpheme_theme.dart';

final class MorphemeTheme${className.pascalCase} extends MorphemeTheme {
MorphemeTheme${className.pascalCase}() : super('${className.snakeCase}');

@override
MorphemeColor get color => MorphemeColor${className.pascalCase}();

@override
ThemeData get rawThemeData => ThemeData.$brightness().copyWith(
      extensions: [color],
    );

@override
ColorScheme get colorScheme => ColorScheme.$brightness(
      primary: color.primary,
    );
}
''');
  }
}