From 8175f15960733d5bd99ee694727027baa9756a59 Mon Sep 17 00:00:00 2001 From: hiroyukitamura Date: Fri, 25 Dec 2020 04:28:03 +0900 Subject: [PATCH 1/2] support lottie --- example/pubspec.yaml | 2 + lib/src/generators/assets_generator.dart | 5 + .../integrations/lottie_integration.dart | 72 +++++++++++ lib/src/settings/asset_type.dart | 3 + lib/src/settings/flutter_gen.dart | 4 + test/assets_gen_integrations_test.dart | 18 +++ .../assets_lottie_integration.gen.dart | 121 ++++++++++++++++++ test_resources/assets/lottie/check.json | 1 + .../pubspec_assets_lottie_integrations.yaml | 12 ++ 9 files changed, 238 insertions(+) create mode 100644 lib/src/generators/integrations/lottie_integration.dart create mode 100644 test_resources/actual_data/assets_lottie_integration.gen.dart create mode 100644 test_resources/assets/lottie/check.json create mode 100644 test_resources/pubspec_assets_lottie_integrations.yaml diff --git a/example/pubspec.yaml b/example/pubspec.yaml index e8dc54d89..7a7d7dcd4 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -15,6 +15,7 @@ dependencies: flutter_svg: ^0.18.1 flare_flutter: ^2.0.6 + lottie: ^0.7.0 dev_dependencies: flutter_test: @@ -30,6 +31,7 @@ flutter_gen: integrations: flutter_svg: true flare_flutter: true + lottie: true assets: # Assets.imagesChip diff --git a/lib/src/generators/assets_generator.dart b/lib/src/generators/assets_generator.dart index 358096d37..c756e85ce 100644 --- a/lib/src/generators/assets_generator.dart +++ b/lib/src/generators/assets_generator.dart @@ -13,6 +13,7 @@ import '../utils/string.dart'; import 'generator_helper.dart'; import 'integrations/flare_integration.dart'; import 'integrations/integration.dart'; +import 'integrations/lottie_integration.dart'; import 'integrations/svg_integration.dart'; String generateAssets( @@ -38,6 +39,10 @@ String generateAssets( if (flutterGen.integrations.flareFlutter) { integrations.add(FlareIntegration()); } + + if (flutterGen.integrations.lottie) { + integrations.add(LottieIntegration()); + } } if (flutterGen == null || diff --git a/lib/src/generators/integrations/lottie_integration.dart b/lib/src/generators/integrations/lottie_integration.dart new file mode 100644 index 000000000..9a17becfe --- /dev/null +++ b/lib/src/generators/integrations/lottie_integration.dart @@ -0,0 +1,72 @@ +import '../../settings/asset_type.dart'; +import 'integration.dart'; + +class LottieIntegration extends Integration { + @override + String get className => 'LottieGenImage'; + + @override + String classInstantiate(String path) => 'LottieGenImage\(\'$path\'\)'; + + @override + bool isSupport(AssetType type) => + type.extension == '.json' && type.isInLottieDir; + + @override + bool get isConstConstructor => true; + + @override + String get classOutput => '''class LottieGenImage { + + const LottieGenImage(this._assetName); + + final String _assetName; + + LottieBuilder lottie({ + Animation controller, + bool animate, + FrameRate frameRate, + bool repeat, + bool reverse, + LottieDelegates delegates, + LottieOptions options, + void Function(LottieComposition) onLoaded, + LottieImageProviderFactory imageProviderFactory, + Key key, + AssetBundle bundle, + LottieFrameBuilder frameBuilder, + double width, + double height, + BoxFit fit, + Alignment alignment, + String package, + bool addRepaintBoundary, + }) { + return Lottie.asset( + '_assetName', + controller: controller, + animate: animate, + frameRate: frameRate, + repeat: repeat, + reverse: reverse, + delegates: delegates, + options: options, + onLoaded: onLoaded, + imageProviderFactory: imageProviderFactory, + key: key, + bundle: bundle, + frameBuilder: frameBuilder, + width: width, + height: height, + alignment: alignment, + package: package, + addRepaintBoundary: addRepaintBoundary, + ); + } + + String get path => _assetName; +}'''; + + @override + List get requiredImports => ['package:lottie/lottie.dart']; +} diff --git a/lib/src/settings/asset_type.dart b/lib/src/settings/asset_type.dart index ecfe0eebb..5d6b3e188 100644 --- a/lib/src/settings/asset_type.dart +++ b/lib/src/settings/asset_type.dart @@ -50,6 +50,9 @@ class AssetType { String get baseName => p.basenameWithoutExtension(path); + bool get isInLottieDir => + p.split(p.dirname(path)).any((it) => it.toLowerCase() == 'lottie'); + List get children => _children.sortedBy((e) => e.path); void addChild(AssetType type) { diff --git a/lib/src/settings/flutter_gen.dart b/lib/src/settings/flutter_gen.dart index 92a9f372e..b6fabcd5c 100644 --- a/lib/src/settings/flutter_gen.dart +++ b/lib/src/settings/flutter_gen.dart @@ -86,13 +86,17 @@ class FlutterGenIntegrations { if (flutterGenMap != null) { _flutterSvg = safeCast(flutterGenMap['flutter_svg']); _flareFlutter = safeCast(flutterGenMap['flare_flutter']); + _lottie = safeCast(flutterGenMap['lottie']); } } bool _flutterSvg; bool _flareFlutter; + bool _lottie; bool get flutterSvg => _flutterSvg ?? false; bool get flareFlutter => _flareFlutter ?? false; + + bool get lottie => _lottie ?? false; } diff --git a/test/assets_gen_integrations_test.dart b/test/assets_gen_integrations_test.dart index a2f603257..141f3c724 100644 --- a/test/assets_gen_integrations_test.dart +++ b/test/assets_gen_integrations_test.dart @@ -1,5 +1,6 @@ @TestOn('vm') import 'package:flutter_gen/src/generators/integrations/flare_integration.dart'; +import 'package:flutter_gen/src/generators/integrations/lottie_integration.dart'; import 'package:flutter_gen/src/generators/integrations/svg_integration.dart'; import 'package:flutter_gen/src/settings/asset_type.dart'; import 'package:test/test.dart'; @@ -48,5 +49,22 @@ void main() { expect(integration.isSupport(AssetType('assets/path/dog.json')), isFalse); expect(integration.isConstConstructor, isTrue); }); + + test('Assets with Lottie integrations on pubspec.yaml', () async { + final pubspec = 'test_resources/pubspec_assets_lottie_integrations.yaml'; + final fact = + 'test_resources/actual_data/assets_lottie_integrations.gen.dart'; + final generated = 'test_resources/lib/gen/assets_lottie_integrations.gen.dart'; + + expectedAssetsGen(pubspec, generated, fact); + + final integration = LottieIntegration(); + expect(integration.className, 'LottieGenImage'); + expect(integration.classInstantiate('assets/path'), + 'LottieGenImage\(\'assets/path\'\)'); + expect(integration.isSupport(AssetType('assets/lottie/dog.json')), isTrue); + expect(integration.isSupport(AssetType('assets/path/dog.json')), isFalse); + expect(integration.isConstConstructor, isTrue); + }); }); } diff --git a/test_resources/actual_data/assets_lottie_integration.gen.dart b/test_resources/actual_data/assets_lottie_integration.gen.dart new file mode 100644 index 000000000..59c68e9c6 --- /dev/null +++ b/test_resources/actual_data/assets_lottie_integration.gen.dart @@ -0,0 +1,121 @@ +/// GENERATED CODE - DO NOT MODIFY BY HAND +/// ***************************************************** +/// FlutterGen +/// ***************************************************** + +import 'package:flutter/widgets.dart'; +import 'package:lottie/lottie.dart'; + +class $AssetsLottieGen { + const $AssetsLottieGen(); + + LottieGenImage get check => const LottieGenImage('assets/lottie/check.json'); +} + +class Assets { + Assets._(); + + static const $AssetsLottieGen lottie = $AssetsLottieGen(); +} + +class AssetGenImage extends AssetImage { + const AssetGenImage(String assetName) + : _assetName = assetName, + super(assetName); + final String _assetName; + + Image image({ + Key key, + ImageFrameBuilder frameBuilder, + ImageLoadingBuilder loadingBuilder, + ImageErrorWidgetBuilder errorBuilder, + String semanticLabel, + bool excludeFromSemantics = false, + double width, + double height, + Color color, + BlendMode colorBlendMode, + BoxFit fit, + AlignmentGeometry alignment = Alignment.center, + ImageRepeat repeat = ImageRepeat.noRepeat, + Rect centerSlice, + bool matchTextDirection = false, + bool gaplessPlayback = false, + bool isAntiAlias = false, + FilterQuality filterQuality = FilterQuality.low, + }) { + return Image( + key: key, + image: this, + frameBuilder: frameBuilder, + loadingBuilder: loadingBuilder, + errorBuilder: errorBuilder, + semanticLabel: semanticLabel, + excludeFromSemantics: excludeFromSemantics, + width: width, + height: height, + color: color, + colorBlendMode: colorBlendMode, + fit: fit, + alignment: alignment, + repeat: repeat, + centerSlice: centerSlice, + matchTextDirection: matchTextDirection, + gaplessPlayback: gaplessPlayback, + isAntiAlias: isAntiAlias, + filterQuality: filterQuality, + ); + } + + String get path => _assetName; +} + +class LottieGenImage { + const LottieGenImage(this._assetName); + + final String _assetName; + + LottieBuilder lottie({ + Animation controller, + bool animate, + FrameRate frameRate, + bool repeat, + bool reverse, + LottieDelegates delegates, + LottieOptions options, + void Function(LottieComposition) onLoaded, + LottieImageProviderFactory imageProviderFactory, + Key key, + AssetBundle bundle, + LottieFrameBuilder frameBuilder, + double width, + double height, + BoxFit fit, + Alignment alignment, + String package, + bool addRepaintBoundary, + }) { + return Lottie.asset( + '_assetName', + controller: controller, + animate: animate, + frameRate: frameRate, + repeat: repeat, + reverse: reverse, + delegates: delegates, + options: options, + onLoaded: onLoaded, + imageProviderFactory: imageProviderFactory, + key: key, + bundle: bundle, + frameBuilder: frameBuilder, + width: width, + height: height, + alignment: alignment, + package: package, + addRepaintBoundary: addRepaintBoundary, + ); + } + + String get path => _assetName; +} diff --git a/test_resources/assets/lottie/check.json b/test_resources/assets/lottie/check.json new file mode 100644 index 000000000..d55875cd2 --- /dev/null +++ b/test_resources/assets/lottie/check.json @@ -0,0 +1 @@ +{"v":"5.1.1","fr":25,"ip":0,"op":50,"w":150,"h":150,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"ring 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[100,100],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.4588235294117647,0.8901960784313725,0.5803921568627451,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Oval 2","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.438],"y":[0]},"n":["0_1_0p438_0"],"t":13,"s":[0],"e":[83]},{"t":32}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.438],"y":[0]},"n":["0_1_0p438_0"],"t":13,"s":[-84],"e":[84]},{"t":32}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":125,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"ring 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[100,100],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.7215686274509804,0.9137254901960784,0.5254901960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Oval 2","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.396],"y":[1]},"o":{"x":[0.576],"y":[0]},"n":["0p396_1_0p576_0"],"t":8,"s":[0],"e":[83]},{"t":25}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.396],"y":[1]},"o":{"x":[0.576],"y":[0]},"n":["0p396_1_0p576_0"],"t":8,"s":[-84],"e":[84]},{"t":25}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":125,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"ring","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[100,100],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Oval 2","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.396],"y":[1]},"o":{"x":[0.576],"y":[0]},"n":["0p396_1_0p576_0"],"t":0,"s":[0],"e":[83]},{"t":20}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.396],"y":[1]},"o":{"x":[0.576],"y":[0]},"n":["0p396_1_0p576_0"],"t":0,"s":[-84],"e":[84]},{"t":20}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":125,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"check 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[49.5,27.860000000000003,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0,41.96],[22.41,64.35],[83.63,0]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4588235294117647,0.8901960784313725,0.5803921568627451,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.257],"y":[0]},"n":["0_1_0p257_0"],"t":20,"s":[0],"e":[100]},{"t":37}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":125,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"check 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[49.5,27.860000000000003,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0,41.96],[22.41,64.35],[83.63,0]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.7215686274509804,0.9137254901960784,0.5254901960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.257],"y":[0]},"n":["0_1_0p257_0"],"t":16,"s":[0],"e":[100]},{"t":34}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":125,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"check","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[49.5,27.860000000000003,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0,41.96],[22.41,64.35],[83.63,0]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.257],"y":[0]},"n":["0_1_0p257_0"],"t":12,"s":[0],"e":[100]},{"t":29}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":125,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"boom","sr":1,"ks":{"o":{"a":0,"k":10,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0.18],"y":[1,1,1]},"o":{"x":[0,0,0.33],"y":[0,0,0]},"n":["0_1_0_0","0_1_0_0","0p18_1_0p33_0"],"t":10,"s":[0,0,100],"e":[100,100,100]},{"t":42}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[150,150],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Oval 2 Copy","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":125,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/test_resources/pubspec_assets_lottie_integrations.yaml b/test_resources/pubspec_assets_lottie_integrations.yaml new file mode 100644 index 000000000..90d2e5ab6 --- /dev/null +++ b/test_resources/pubspec_assets_lottie_integrations.yaml @@ -0,0 +1,12 @@ +name: test + +flutter_gen: + output: lib/gen/ + lineLength: 80 + + integrations: + lottie: true + +flutter: + assets: + - assets/lottie/check.json From 30828fad75cd0b8fb679bbf97f86f8f4823f83ab Mon Sep 17 00:00:00 2001 From: hiroyukitamura Date: Fri, 25 Dec 2020 05:01:07 +0900 Subject: [PATCH 2/2] bug fix on LottieIntegration, add lottie example --- example/assets/lottie/check.json | 1 + example/lib/gen/assets.gen.dart | 60 +++++++++++++++++++ example/lib/main.dart | 4 ++ example/pubspec.lock | 52 ++++++++++------ example/pubspec.yaml | 1 + .../integrations/lottie_integration.dart | 8 ++- .../assets_lottie_integration.gen.dart | 4 +- 7 files changed, 108 insertions(+), 22 deletions(-) create mode 100644 example/assets/lottie/check.json diff --git a/example/assets/lottie/check.json b/example/assets/lottie/check.json new file mode 100644 index 000000000..d55875cd2 --- /dev/null +++ b/example/assets/lottie/check.json @@ -0,0 +1 @@ +{"v":"5.1.1","fr":25,"ip":0,"op":50,"w":150,"h":150,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"ring 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[100,100],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.4588235294117647,0.8901960784313725,0.5803921568627451,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Oval 2","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.438],"y":[0]},"n":["0_1_0p438_0"],"t":13,"s":[0],"e":[83]},{"t":32}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.438],"y":[0]},"n":["0_1_0p438_0"],"t":13,"s":[-84],"e":[84]},{"t":32}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":125,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"ring 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[100,100],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.7215686274509804,0.9137254901960784,0.5254901960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Oval 2","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.396],"y":[1]},"o":{"x":[0.576],"y":[0]},"n":["0p396_1_0p576_0"],"t":8,"s":[0],"e":[83]},{"t":25}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.396],"y":[1]},"o":{"x":[0.576],"y":[0]},"n":["0p396_1_0p576_0"],"t":8,"s":[-84],"e":[84]},{"t":25}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":125,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"ring","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[100,100],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Oval 2","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.396],"y":[1]},"o":{"x":[0.576],"y":[0]},"n":["0p396_1_0p576_0"],"t":0,"s":[0],"e":[83]},{"t":20}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.396],"y":[1]},"o":{"x":[0.576],"y":[0]},"n":["0p396_1_0p576_0"],"t":0,"s":[-84],"e":[84]},{"t":20}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":125,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"check 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[49.5,27.860000000000003,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0,41.96],[22.41,64.35],[83.63,0]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4588235294117647,0.8901960784313725,0.5803921568627451,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.257],"y":[0]},"n":["0_1_0p257_0"],"t":20,"s":[0],"e":[100]},{"t":37}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":125,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"check 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[49.5,27.860000000000003,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0,41.96],[22.41,64.35],[83.63,0]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.7215686274509804,0.9137254901960784,0.5254901960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.257],"y":[0]},"n":["0_1_0p257_0"],"t":16,"s":[0],"e":[100]},{"t":34}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":125,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"check","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[49.5,27.860000000000003,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0,41.96],[22.41,64.35],[83.63,0]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.257],"y":[0]},"n":["0_1_0p257_0"],"t":12,"s":[0],"e":[100]},{"t":29}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":125,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"boom","sr":1,"ks":{"o":{"a":0,"k":10,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0.18],"y":[1,1,1]},"o":{"x":[0,0,0.33],"y":[0,0,0]},"n":["0_1_0_0","0_1_0_0","0p18_1_0p33_0"],"t":10,"s":[0,0,100],"e":[100,100,100]},{"t":42}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[150,150],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Oval 2 Copy","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":125,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/example/lib/gen/assets.gen.dart b/example/lib/gen/assets.gen.dart index dd9702883..ced5ab275 100644 --- a/example/lib/gen/assets.gen.dart +++ b/example/lib/gen/assets.gen.dart @@ -8,6 +8,9 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter/services.dart'; import 'package:flare_flutter/flare_actor.dart'; import 'package:flare_flutter/flare_controller.dart'; +import 'package:lottie/lottie.dart'; +import 'package:lottie/src/providers/load_image.dart'; +import 'package:lottie/src/lottie_builder.dart'; class $PicturesGen { const $PicturesGen(); @@ -39,6 +42,12 @@ class $AssetsJsonGen { String get fruits => 'assets/json/fruits.json'; } +class $AssetsLottieGen { + const $AssetsLottieGen(); + + LottieGenImage get check => const LottieGenImage('assets/lottie/check.json'); +} + class $AssetsMovieGen { const $AssetsMovieGen(); @@ -82,6 +91,7 @@ class Assets { static const $AssetsFlareGen flare = $AssetsFlareGen(); static const $AssetsImagesGen images = $AssetsImagesGen(); static const $AssetsJsonGen json = $AssetsJsonGen(); + static const $AssetsLottieGen lottie = $AssetsLottieGen(); static const $AssetsMovieGen movie = $AssetsMovieGen(); static const $AssetsUnknownGen unknown = $AssetsUnknownGen(); static const $PicturesGen pictures = $PicturesGen(); @@ -224,3 +234,53 @@ class FlareGenImage { String get path => _assetName; } + +class LottieGenImage { + const LottieGenImage(this._assetName); + + final String _assetName; + + LottieBuilder lottie({ + Animation controller, + bool animate, + FrameRate frameRate, + bool repeat, + bool reverse, + LottieDelegates delegates, + LottieOptions options, + void Function(LottieComposition) onLoaded, + LottieImageProviderFactory imageProviderFactory, + Key key, + AssetBundle bundle, + LottieFrameBuilder frameBuilder, + double width, + double height, + BoxFit fit, + Alignment alignment, + String package, + bool addRepaintBoundary, + }) { + return Lottie.asset( + _assetName, + controller: controller, + animate: animate, + frameRate: frameRate, + repeat: repeat, + reverse: reverse, + delegates: delegates, + options: options, + onLoaded: onLoaded, + imageProviderFactory: imageProviderFactory, + key: key, + bundle: bundle, + frameBuilder: frameBuilder, + width: width, + height: height, + alignment: alignment, + package: package, + addRepaintBoundary: addRepaintBoundary, + ); + } + + String get path => _assetName; +} diff --git a/example/lib/main.dart b/example/lib/main.dart index d0de07bdd..f955f9fa0 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -43,6 +43,10 @@ void main() { height: 120, fit: BoxFit.scaleDown, ), + Assets.lottie.check.lottie( + width: 120, + height: 120, + ), const Text( 'Hi there, I\'m FlutterGen', style: TextStyle( diff --git a/example/pubspec.lock b/example/pubspec.lock index d74e76797..92c99cf31 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -15,6 +15,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.40.6" + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.13" args: dependency: transitive description: @@ -28,14 +35,14 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.5.0-nullsafety.3" + version: "2.5.0-nullsafety.1" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.3" + version: "2.1.0-nullsafety.1" build: dependency: transitive description: @@ -98,14 +105,14 @@ packages: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.5" + version: "1.1.0-nullsafety.3" charcode: dependency: transitive description: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.3" + version: "1.2.0-nullsafety.1" checked_yaml: dependency: transitive description: @@ -126,7 +133,7 @@ packages: name: clock url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.3" + version: "1.1.0-nullsafety.1" code_builder: dependency: transitive description: @@ -140,7 +147,7 @@ packages: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.15.0-nullsafety.5" + version: "1.15.0-nullsafety.3" color: dependency: transitive description: @@ -182,7 +189,7 @@ packages: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.3" + version: "1.2.0-nullsafety.1" file: dependency: transitive description: @@ -298,20 +305,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.11.4" + lottie: + dependency: "direct main" + description: + name: lottie + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.0+1" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.10-nullsafety.3" + version: "0.12.10-nullsafety.1" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.6" + version: "1.3.0-nullsafety.3" mime: dependency: transitive description: @@ -346,7 +360,7 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0-nullsafety.3" + version: "1.8.0-nullsafety.1" path_drawing: dependency: transitive description: @@ -428,21 +442,21 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.0-nullsafety.4" + version: "1.8.0-nullsafety.2" stack_trace: dependency: transitive description: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.10.0-nullsafety.6" + version: "1.10.0-nullsafety.1" stream_channel: dependency: transitive description: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.3" + version: "2.1.0-nullsafety.1" stream_transform: dependency: transitive description: @@ -456,21 +470,21 @@ packages: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.3" + version: "1.1.0-nullsafety.1" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.3" + version: "1.2.0-nullsafety.1" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.19-nullsafety.6" + version: "0.2.19-nullsafety.2" time: dependency: transitive description: @@ -491,14 +505,14 @@ packages: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.5" + version: "1.3.0-nullsafety.3" vector_math: dependency: transitive description: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.5" + version: "2.1.0-nullsafety.3" watcher: dependency: transitive description: @@ -528,5 +542,5 @@ packages: source: hosted version: "2.2.1" sdks: - dart: ">=2.12.0-0.0 <3.0.0" + dart: ">=2.10.0 <2.11.0" flutter: ">=1.22.0 <2.0.0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 7a7d7dcd4..fe25c5ed5 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -62,6 +62,7 @@ flutter: - assets/json/fruits.json - pictures/chip5.jpg - assets/flare/ + - assets/lottie/ - assets/movie/ - assets/unknown/ fonts: diff --git a/lib/src/generators/integrations/lottie_integration.dart b/lib/src/generators/integrations/lottie_integration.dart index 9a17becfe..4440fd3db 100644 --- a/lib/src/generators/integrations/lottie_integration.dart +++ b/lib/src/generators/integrations/lottie_integration.dart @@ -43,7 +43,7 @@ class LottieIntegration extends Integration { bool addRepaintBoundary, }) { return Lottie.asset( - '_assetName', + _assetName, controller: controller, animate: animate, frameRate: frameRate, @@ -68,5 +68,9 @@ class LottieIntegration extends Integration { }'''; @override - List get requiredImports => ['package:lottie/lottie.dart']; + List get requiredImports => [ + 'package:lottie/lottie.dart', + 'package:lottie/src/providers/load_image.dart', + 'package:lottie/src/lottie_builder.dart' + ]; } diff --git a/test_resources/actual_data/assets_lottie_integration.gen.dart b/test_resources/actual_data/assets_lottie_integration.gen.dart index 59c68e9c6..8aa7d758c 100644 --- a/test_resources/actual_data/assets_lottie_integration.gen.dart +++ b/test_resources/actual_data/assets_lottie_integration.gen.dart @@ -5,6 +5,8 @@ import 'package:flutter/widgets.dart'; import 'package:lottie/lottie.dart'; +import 'package:lottie/src/providers/load_image.dart'; +import 'package:lottie/src/lottie_builder.dart'; class $AssetsLottieGen { const $AssetsLottieGen(); @@ -96,7 +98,7 @@ class LottieGenImage { bool addRepaintBoundary, }) { return Lottie.asset( - '_assetName', + _assetName, controller: controller, animate: animate, frameRate: frameRate,