Skip to content

Commit a5b3700

Browse files
Fix package_parameter_enabled being ignored for Flare, Rive and Lottie (#300)
Co-authored-by: Daichi Furiya <[email protected]>
1 parent 51ce018 commit a5b3700

File tree

7 files changed

+81
-17
lines changed

7 files changed

+81
-17
lines changed

packages/core/lib/generators/assets_generator.dart

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,12 @@ String generateAssets(
6565
final integrations = <Integration>[
6666
if (config.flutterGen.integrations.flutterSvg)
6767
SvgIntegration(config.packageParameterLiteral),
68-
if (config.flutterGen.integrations.flareFlutter) FlareIntegration(),
69-
if (config.flutterGen.integrations.rive) RiveIntegration(),
70-
if (config.flutterGen.integrations.lottie) LottieIntegration(),
68+
if (config.flutterGen.integrations.flareFlutter)
69+
FlareIntegration(config.packageParameterLiteral),
70+
if (config.flutterGen.integrations.rive)
71+
RiveIntegration(config.packageParameterLiteral),
72+
if (config.flutterGen.integrations.lottie)
73+
LottieIntegration(config.packageParameterLiteral),
7174
];
7275

7376
// TODO: This code will be removed.

packages/core/lib/generators/integrations/flare_integration.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@ import '../../settings/asset_type.dart';
22
import 'integration.dart';
33

44
class FlareIntegration extends Integration {
5+
6+
FlareIntegration(String packageParameterLiteral)
7+
: super(packageParameterLiteral);
8+
9+
String? get packageExpression => packageParameterLiteral.isNotEmpty
10+
? 'packages/$packageParameterLiteral/'
11+
: null;
12+
513
@override
614
List<String> get requiredImports => [
715
'package:flare_flutter/flare_actor.dart',
@@ -11,7 +19,7 @@ class FlareIntegration extends Integration {
1119
@override
1220
String get classOutput => _classDefinition;
1321

14-
final String _classDefinition = '''class FlareGenImage {
22+
String get _classDefinition => '''class FlareGenImage {
1523
const FlareGenImage(this._assetName);
1624
1725
final String _assetName;
@@ -32,7 +40,7 @@ class FlareIntegration extends Integration {
3240
bool antialias = true,
3341
}) {
3442
return FlareActor(
35-
_assetName,
43+
${packageExpression == null ? '_assetName' : '\'$packageExpression\$_assetName\''},
3644
boundsNode: boundsNode,
3745
animation: animation,
3846
fit: fit,

packages/core/lib/generators/integrations/integration.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import '../../settings/asset_type.dart';
22

33
abstract class Integration {
4+
5+
Integration(this.packageParameterLiteral);
6+
7+
final String packageParameterLiteral;
8+
49
bool isEnabled = false;
510

611
List<String> get requiredImports;

packages/core/lib/generators/integrations/lottie_integration.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ import 'dart:io';
77
import 'package:path/path.dart' as p;
88

99
class LottieIntegration extends Integration {
10+
11+
LottieIntegration(String packageParameterLiteral)
12+
: super(packageParameterLiteral);
13+
1014
// These are required keys for this integration.
1115
static const lottieKeys = [
1216
'w', // width
@@ -18,6 +22,10 @@ class LottieIntegration extends Integration {
1822
'layers', // Must include layers
1923
];
2024

25+
String get packageExpression => packageParameterLiteral.isNotEmpty
26+
? ' = \'$packageParameterLiteral\''
27+
: '';
28+
2129
@override
2230
List<String> get requiredImports => [
2331
'package:lottie/lottie.dart',
@@ -26,7 +34,7 @@ class LottieIntegration extends Integration {
2634
@override
2735
String get classOutput => _classDefinition;
2836

29-
final String _classDefinition = '''class LottieGenImage {
37+
String get _classDefinition => '''class LottieGenImage {
3038
const LottieGenImage(this._assetName);
3139
3240
final String _assetName;
@@ -49,7 +57,7 @@ class LottieIntegration extends Integration {
4957
double? height,
5058
BoxFit? fit,
5159
AlignmentGeometry? alignment,
52-
String? package,
60+
String? package$packageExpression,
5361
bool? addRepaintBoundary,
5462
FilterQuality? filterQuality,
5563
void Function(String)? onWarning,

packages/core/lib/generators/integrations/rive_integration.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@ import '../../settings/asset_type.dart';
22
import 'integration.dart';
33

44
class RiveIntegration extends Integration {
5+
6+
RiveIntegration(String packageParameterLiteral)
7+
: super(packageParameterLiteral);
8+
9+
String? get packageExpression => packageParameterLiteral.isNotEmpty
10+
? 'packages/$packageParameterLiteral/'
11+
: null;
12+
513
@override
614
List<String> get requiredImports => [
715
'package:rive/rive.dart',
@@ -10,7 +18,7 @@ class RiveIntegration extends Integration {
1018
@override
1119
String get classOutput => _classDefinition;
1220

13-
final String _classDefinition = '''class RiveGenImage {
21+
String get _classDefinition => '''class RiveGenImage {
1422
const RiveGenImage(this._assetName);
1523
1624
final String _assetName;
@@ -27,7 +35,7 @@ class RiveIntegration extends Integration {
2735
OnInitCallback? onInit,
2836
}) {
2937
return RiveAnimation.asset(
30-
_assetName,
38+
${packageExpression == null ? '_assetName' : '\'$packageExpression\$_assetName\''},
3139
artboard: artboard,
3240
animations: animations,
3341
stateMachines: stateMachines,

packages/core/lib/generators/integrations/svg_integration.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ import '../../settings/asset_type.dart';
22
import 'integration.dart';
33

44
class SvgIntegration extends Integration {
5-
SvgIntegration(this._packageParameterLiteral);
65

7-
final String _packageParameterLiteral;
6+
SvgIntegration(String packageParameterLiteral)
7+
: super(packageParameterLiteral);
88

9-
String get packageExpression => _packageParameterLiteral.isNotEmpty
10-
? ' = \'$_packageParameterLiteral\''
9+
String get packageExpression => packageParameterLiteral.isNotEmpty
10+
? ' = \'$packageParameterLiteral\''
1111
: '';
1212

1313
@override

packages/core/test/assets_gen_integrations_test.dart

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ void main() {
2929

3030
await expectedAssetsGen(pubspec, generated, fact);
3131

32-
final integration = SvgIntegration('package_name');
32+
final integration = SvgIntegration('');
3333
expect(integration.className, 'SvgGenImage');
3434
expect(integration.classInstantiate('assets/path'),
3535
'SvgGenImage(\'assets/path\')');
@@ -42,6 +42,14 @@ void main() {
4242
AssetType(rootPath: resPath, path: 'assets/path/dog.png')),
4343
isFalse);
4444
expect(integration.isConstConstructor, isTrue);
45+
expect(integration.classOutput.contains('String? package,'), isTrue);
46+
47+
final integrationWithPackage = SvgIntegration('package_name');
48+
expect(
49+
integrationWithPackage.classOutput
50+
.contains('String? package = \'package_name\','),
51+
isTrue,
52+
);
4553
});
4654

4755
test('Assets with Flare integrations on pubspec.yaml', () async {
@@ -53,7 +61,7 @@ void main() {
5361

5462
await expectedAssetsGen(pubspec, generated, fact);
5563

56-
final integration = FlareIntegration();
64+
final integration = FlareIntegration('');
5765
expect(integration.className, 'FlareGenImage');
5866
expect(integration.classInstantiate('assets/path'),
5967
'FlareGenImage(\'assets/path\')');
@@ -66,6 +74,14 @@ void main() {
6674
AssetType(rootPath: resPath, path: 'assets/path/dog.json')),
6775
isFalse);
6876
expect(integration.isConstConstructor, isTrue);
77+
expect(integration.classOutput.contains('_assetName,'), isTrue);
78+
79+
final integrationWithPackage = FlareIntegration('package_name');
80+
expect(
81+
integrationWithPackage.classOutput
82+
.contains('\'packages/package_name/\$_assetName\','),
83+
isTrue,
84+
);
6985
});
7086

7187
test('Assets with Rive integrations on pubspec.yaml', () async {
@@ -77,7 +93,7 @@ void main() {
7793

7894
await expectedAssetsGen(pubspec, generated, fact);
7995

80-
final integration = RiveIntegration();
96+
final integration = RiveIntegration('');
8197
expect(integration.className, 'RiveGenImage');
8298
expect(integration.classInstantiate('assets/path'),
8399
'RiveGenImage(\'assets/path\')');
@@ -90,6 +106,14 @@ void main() {
90106
AssetType(rootPath: resPath, path: 'assets/path/dog.json')),
91107
isFalse);
92108
expect(integration.isConstConstructor, isTrue);
109+
expect(integration.classOutput.contains('_assetName,'), isTrue);
110+
111+
final integrationWithPackage = RiveIntegration('package_name');
112+
expect(
113+
integrationWithPackage.classOutput
114+
.contains('\'packages/package_name/\$_assetName\','),
115+
isTrue,
116+
);
93117
});
94118

95119
test('Assets with Lottie integrations on pubspec.yaml', () async {
@@ -101,7 +125,7 @@ void main() {
101125

102126
await expectedAssetsGen(pubspec, generated, fact);
103127

104-
final integration = LottieIntegration();
128+
final integration = LottieIntegration('');
105129
expect(integration.className, 'LottieGenImage');
106130
expect(integration.classInstantiate('assets/lottie'),
107131
'LottieGenImage(\'assets/lottie\')');
@@ -115,6 +139,14 @@ void main() {
115139
path: 'assets/lottie/hamburger_arrow_without_version.json')),
116140
isFalse);
117141
expect(integration.isConstConstructor, isTrue);
142+
expect(integration.classOutput.contains('String? package,'), isTrue);
143+
144+
final integrationWithPackage = LottieIntegration('package_name');
145+
expect(
146+
integrationWithPackage.classOutput
147+
.contains('String? package = \'package_name\','),
148+
isTrue,
149+
);
118150
});
119151
});
120152
}

0 commit comments

Comments
 (0)