Skip to content

Commit 5df7285

Browse files
author
Ian Maciel
committed
Add support for Flutter deferred components
1 parent 21bcf5b commit 5df7285

File tree

3 files changed

+38
-1
lines changed

3 files changed

+38
-1
lines changed

packages/core/lib/generators/assets_generator.dart

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class AssetsGenConfig {
3434
pubspecFile.parent.absolute.path,
3535
config.pubspec.packageName,
3636
config.pubspec.flutterGen,
37-
config.pubspec.flutter.assets,
37+
_buildAssetsList(config),
3838
config.pubspec.flutterGen.assets.exclude.map(Glob.new).toList(),
3939
);
4040
}
@@ -49,6 +49,17 @@ class AssetsGenConfig {
4949
flutterGen.assets.outputs.packageParameterEnabled ? _packageName : '';
5050
}
5151

52+
List<Object> _buildAssetsList(Config config) {
53+
final List<Object> deferredAssets = [];
54+
config.pubspec.flutter.deferredComponents?.forEach((deferredComponent) {
55+
// Include all manipulated assets to the list of deferred assets.
56+
deferredAssets.addAll(deferredComponent.assets ?? []);
57+
});
58+
59+
// Merge the deferred assets with the main assets.
60+
return [...config.pubspec.flutter.assets, ...deferredAssets];
61+
}
62+
5263
String generateAssets(
5364
AssetsGenConfig config,
5465
DartFormatter formatter,

packages/core/lib/settings/pubspec.dart

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class Flutter {
2929
Flutter({
3030
required this.assets,
3131
required this.fonts,
32+
required this.deferredComponents,
3233
});
3334

3435
@JsonKey(name: 'assets', required: true)
@@ -37,6 +38,9 @@ class Flutter {
3738
@JsonKey(name: 'fonts', required: true)
3839
final List<FlutterFonts> fonts;
3940

41+
@JsonKey(name: 'deferred-components', required: false)
42+
final List<FlutterDeferredComponents>? deferredComponents;
43+
4044
factory Flutter.fromJson(Map json) => _$FlutterFromJson(json);
4145
}
4246

@@ -243,3 +247,19 @@ class FlutterGenElementFontsOutputs extends FlutterGenElementOutputs {
243247
factory FlutterGenElementFontsOutputs.fromJson(Map json) =>
244248
_$FlutterGenElementFontsOutputsFromJson(json);
245249
}
250+
251+
class FlutterDeferredComponents {
252+
FlutterDeferredComponents({
253+
required this.name,
254+
required this.assets,
255+
});
256+
257+
@JsonKey(name: 'name', required: true)
258+
final String name;
259+
260+
@JsonKey(name: 'assets', required: false)
261+
final List<Object>? assets;
262+
263+
factory FlutterDeferredComponents.fromJson(Map json) =>
264+
_$FlutterDeferredComponentsFromJson(json);
265+
}

packages/core/lib/settings/pubspec.g.dart

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)