@@ -3,12 +3,13 @@ import 'dart:convert';
33import 'package:analyzer/dart/element/element.dart' ;
44import 'package:build/build.dart' ;
55import 'package:code_builder/code_builder.dart' ;
6+ import 'package:dart_casing/dart_casing.dart' ;
67import 'package:dart_style/dart_style.dart' ;
78import 'package:dart_utils/dart_utils.dart' ;
89import 'package:flutter_translate_annotations/flutter_translate_annotations.dart' ;
910import 'package:flutter_translate_gen/annotation_generator.dart' ;
1011import 'package:flutter_translate_gen/keys_class_generator.dart' ;
11- import 'package:flutter_translate_gen/translation .dart' ;
12+ import 'package:flutter_translate_gen/localized_item .dart' ;
1213import 'package:glob/glob.dart' ;
1314import 'package:source_gen/source_gen.dart' ;
1415
@@ -27,7 +28,7 @@ class FlutterTranslateGen extends AnnotationGenerator<TranslateKeysOptions>
2728
2829 validateClassName (className);
2930
30- List <Translation > translations;
31+ List <LocalizedItem > translations;
3132
3233 try
3334 {
@@ -40,7 +41,7 @@ class FlutterTranslateGen extends AnnotationGenerator<TranslateKeysOptions>
4041
4142 validateLocalizationItems (translations);
4243
43- final file = Library ((lb) => lb..body.addAll ([generateKeysClass ( translations, className)]));
44+ final file = Library ((lb) => lb..body.addAll ([KeysClassGenerator . generateClass (options, translations, className)]));
4445
4546 final DartEmitter emitter = DartEmitter (Allocator ());
4647
@@ -55,7 +56,7 @@ class FlutterTranslateGen extends AnnotationGenerator<TranslateKeysOptions>
5556 separator: annotation.peek ("separator" )? .stringValue);
5657 }
5758
58- Future <List <Translation >> getKeyMap (BuildStep step, TranslateKeysOptions options) async
59+ Future <List <LocalizedItem >> getKeyMap (BuildStep step, TranslateKeysOptions options) async
5960 {
6061 var mapping = < String , List <String >> {};
6162
@@ -70,13 +71,24 @@ class FlutterTranslateGen extends AnnotationGenerator<TranslateKeysOptions>
7071 translationMap.forEach ((key, value) => (mapping[key] ?? = < String > []).add (value));
7172 }
7273
73- var translations = List <Translation >();
74+ var translations = List <LocalizedItem >();
7475
75- mapping.forEach ((id, trans) => translations.add (Translation (key : id, translations : trans, separator : options.separator), ));
76+ mapping.forEach ((id, trans) => translations.add (LocalizedItem ( id, trans, getKeyFieldName (id, options)) ));
7677
7778 return translations;
7879 }
7980
81+ String getKeyFieldName (String key, TranslateKeysOptions options)
82+ {
83+ switch (options.caseStyle)
84+ {
85+ case CaseStyle .titleCase: return Casing .titleCase (key,separator: options.separator);
86+ case CaseStyle .upperCase: return Casing .upperCase (key,separator: options.separator);
87+ case CaseStyle .lowerCase: return Casing .lowerCase (key,separator: options.separator);
88+ default : return throw InvalidGenerationSourceError ("Invalid CaseStyle specified: ${options .caseStyle .toString ()}" );
89+ }
90+ }
91+
8092 Map <String , String > getTranslationMap (Map <String , dynamic > jsonMap, {String parentKey})
8193 {
8294 final map = Map <String , String >();
@@ -101,7 +113,7 @@ class FlutterTranslateGen extends AnnotationGenerator<TranslateKeysOptions>
101113 return map;
102114 }
103115
104- void validateLocalizationItems (List <Translation > translations)
116+ void validateLocalizationItems (List <LocalizedItem > translations)
105117 {
106118 if (translations.isEmpty) return ;
107119
0 commit comments