@@ -30,13 +30,20 @@ class _Builder extends Builder {
3030
3131 final bool _requireLibraryDirective;
3232
33+ @override
34+ final Map <String , List <String >> buildExtensions;
35+
3336 /// Wrap [_generators] to form a [Builder] -compatible API.
3437 _Builder (this ._generators,
3538 {String formatOutput (String code),
3639 String generatedExtension: '.g.dart' ,
40+ List <String > additionalOutputExtensions: const [],
3741 bool isStandalone: false ,
3842 bool requireLibraryDirective: true })
3943 : _generatedExtension = generatedExtension,
44+ buildExtensions = {
45+ '.dart' : [generatedExtension]..addAll (additionalOutputExtensions)
46+ },
4047 _isStandalone = isStandalone,
4148 formatOutput = formatOutput ?? _formatter.format,
4249 _requireLibraryDirective = requireLibraryDirective {
@@ -61,11 +68,6 @@ class _Builder extends Builder {
6168 await _generateForLibrary (lib, buildStep);
6269 }
6370
64- @override
65- Map <String , List <String >> get buildExtensions => {
66- '.dart' : [_generatedExtension]
67- };
68-
6971 AssetId _generatedFile (AssetId input) =>
7072 input.changeExtension (_generatedExtension);
7173
@@ -143,7 +145,9 @@ class PartBuilder extends _Builder {
143145 /// Wrap [generators] as a [Builder] that generates `part of` files.
144146 ///
145147 /// [generatedExtension] indicates what files will be created for each `.dart`
146- /// input. Defaults to `.g.dart` .
148+ /// input. Defaults to `.g.dart` . If any generator in [generators] will create
149+ /// additional outputs through the [BuildStep] they should be indicated in
150+ /// [additionalOutputExtensions] .
147151 ///
148152 /// [formatOutput] is called to format the generated code. Defaults to
149153 /// [DartFormatter.format] .
@@ -158,10 +162,12 @@ class PartBuilder extends _Builder {
158162 PartBuilder (List <Generator > generators,
159163 {String formatOutput (String code),
160164 String generatedExtension: '.g.dart' ,
165+ List <String > additionalOutputExtensions: const [],
161166 bool requireLibraryDirective: true })
162167 : super (generators,
163168 formatOutput: formatOutput,
164169 generatedExtension: generatedExtension,
170+ additionalOutputExtensions: additionalOutputExtensions,
165171 requireLibraryDirective: requireLibraryDirective);
166172}
167173
@@ -170,15 +176,20 @@ class LibraryBuilder extends _Builder {
170176 /// Wrap [generator] as a [Builder] that generates Dart library files.
171177 ///
172178 /// [generatedExtension] indicates what files will be created for each `.dart`
173- /// input. Defaults to `.g.dart` .
179+ /// input. Defaults to `.g.dart` . If [generator] will create additional
180+ /// outputs through the [BuildStep] they should be indicated in
181+ /// [additionalOutputExtensions] .
174182 ///
175183 /// [formatOutput] is called to format the generated code. Defaults to
176184 /// [DartFormatter.format] .
177185 LibraryBuilder (Generator generator,
178- {String formatOutput (String code), String generatedExtension: '.g.dart' })
186+ {String formatOutput (String code),
187+ String generatedExtension: '.g.dart' ,
188+ List <String > additionalOutputExtensions: const []})
179189 : super ([generator],
180190 formatOutput: formatOutput,
181191 generatedExtension: generatedExtension,
192+ additionalOutputExtensions: additionalOutputExtensions,
182193 isStandalone: true );
183194}
184195
0 commit comments