Skip to content

Commit 69dd134

Browse files
authored
Merge pull request #56 from FlutterGen/support-unknown-mime
Support unknown mime type files
2 parents faf4e2b + e0afb6e commit 69dd134

File tree

12 files changed

+156
-1
lines changed

12 files changed

+156
-1
lines changed

example/assets/flare/Penguin.flr

10.9 KB
Binary file not shown.

example/assets/movie/the_earth.mp4

1.5 MB
Binary file not shown.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
This file is UNKNOWN MIME TYPE FILE.

example/lib/gen/assets.gen.dart

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ class $PicturesGen {
1313
AssetGenImage get chip5 => const AssetGenImage('pictures/chip5.jpg');
1414
}
1515

16+
class $AssetsFlareGen {
17+
const $AssetsFlareGen();
18+
19+
String get penguin => 'assets/flare/Penguin.flr';
20+
}
21+
1622
class $AssetsImagesGen {
1723
const $AssetsImagesGen();
1824

@@ -31,6 +37,18 @@ class $AssetsJsonGen {
3137
String get fruits => 'assets/json/fruits.json';
3238
}
3339

40+
class $AssetsMovieGen {
41+
const $AssetsMovieGen();
42+
43+
String get theEarth => 'assets/movie/the_earth.mp4';
44+
}
45+
46+
class $AssetsUnknownGen {
47+
const $AssetsUnknownGen();
48+
49+
String get unknownMimeType => 'assets/unknown/unknown_mime_type.bk';
50+
}
51+
3452
class $AssetsImagesChip3Gen {
3553
const $AssetsImagesChip3Gen();
3654

@@ -57,8 +75,11 @@ class $AssetsImagesIconsGen {
5775
class Assets {
5876
Assets._();
5977

78+
static const $AssetsFlareGen flare = $AssetsFlareGen();
6079
static const $AssetsImagesGen images = $AssetsImagesGen();
6180
static const $AssetsJsonGen json = $AssetsJsonGen();
81+
static const $AssetsMovieGen movie = $AssetsMovieGen();
82+
static const $AssetsUnknownGen unknown = $AssetsUnknownGen();
6283
static const $PicturesGen pictures = $PicturesGen();
6384
}
6485

example/lib/main.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:example/gen/assets.gen.dart';
22
import 'package:example/gen/colors.gen.dart';
33
import 'package:example/gen/fonts.gen.dart';
4+
import 'package:flare_flutter/flare_actor.dart';
45
import 'package:flutter/material.dart';
56
import 'package:flutter/widgets.dart';
67

@@ -22,6 +23,15 @@ void main() {
2223
mainAxisAlignment: MainAxisAlignment.center,
2324
children: <Widget>[
2425
// Auto generated image from FlutterGen.
26+
Container(
27+
width: 200,
28+
height: 200,
29+
child: FlareActor(
30+
Assets.flare.penguin,
31+
animation: 'walk',
32+
fit: BoxFit.contain,
33+
),
34+
),
2535
Image(image: Assets.images.chip1),
2636
Assets.images.icons.kmm.svg(key: Key("kmm_svg")),
2737
Assets.images.icons.fuchsia.svg(),

example/pubspec.lock

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,20 @@ packages:
197197
url: "https://pub.dartlang.org"
198198
source: hosted
199199
version: "0.10.11"
200+
flare_dart:
201+
dependency: transitive
202+
description:
203+
name: flare_dart
204+
url: "https://pub.dartlang.org"
205+
source: hosted
206+
version: "2.3.4"
207+
flare_flutter:
208+
dependency: "direct main"
209+
description:
210+
name: flare_flutter
211+
url: "https://pub.dartlang.org"
212+
source: hosted
213+
version: "2.0.6"
200214
flutter:
201215
dependency: "direct main"
202216
description: flutter

example/pubspec.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ dependencies:
1414
sdk: flutter
1515

1616
flutter_svg: ^0.18.1
17+
flare_flutter: ^2.0.6
1718

1819
dev_dependencies:
1920
flutter_test:
@@ -57,6 +58,9 @@ flutter:
5758
- assets/images/icons/paint.svg
5859
- assets/json/fruits.json
5960
- pictures/chip5.jpg
61+
- assets/flare/
62+
- assets/movie/
63+
- assets/unknown/unknown_mime_type.bk
6064
fonts:
6165
- family: Raleway
6266
fonts:

lib/src/generators/assets_generator.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ _Statement _createAssetTypeStatement(
137137
value: '$childClassName\(\)',
138138
isConstConstructor: true,
139139
);
140-
} else if (!assetType.isUnKnownMime) {
140+
} else {
141141
final integration = integrations.firstWhere(
142142
(element) => element.mime == assetType.mime,
143143
orElse: () => null,

test/assets_gen_test.dart

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,31 @@ void main() {
9090
expect(actual, expected);
9191
});
9292

93+
test('Assets with Unknown mime type on pubspec.yaml', () async {
94+
await FlutterGenerator(
95+
File('test_resources/pubspec_unknown_mime_type.yaml'))
96+
.build();
97+
expect(
98+
File('test_resources/lib/gen/assets.gen.dart').readAsStringSync(),
99+
isNotEmpty,
100+
);
101+
102+
final pubspec =
103+
File('test_resources/pubspec_unknown_mime_type.yaml');
104+
final config = await Config(pubspec).load();
105+
final formatter = DartFormatter(
106+
pageWidth: config.flutterGen.lineLength, lineEnding: '\n');
107+
108+
final actual = generateAssets(
109+
pubspec, formatter, config.flutterGen, config.flutter.assets);
110+
final expected =
111+
File('test_resources/actual_data/assets_unknown_mime_type.gen.dart')
112+
.readAsStringSync()
113+
.replaceAll('\r\n', '\n');
114+
115+
expect(actual, expected);
116+
});
117+
93118
test('Assets with No lists on pubspec.yaml', () async {
94119
final pubspec = File('test_resources/pubspec_assets_no_list.yaml');
95120
final config = await Config(pubspec).load();
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/// GENERATED CODE - DO NOT MODIFY BY HAND
2+
/// *****************************************************
3+
/// FlutterGen
4+
/// *****************************************************
5+
6+
import 'package:flutter/widgets.dart';
7+
8+
class $AssetsUnknownGen {
9+
const $AssetsUnknownGen();
10+
11+
String get unknownMimeType => 'assets/unknown/unknown_mime_type.bk';
12+
}
13+
14+
class Assets {
15+
Assets._();
16+
17+
static const $AssetsUnknownGen unknown = $AssetsUnknownGen();
18+
}
19+
20+
class AssetGenImage extends AssetImage {
21+
const AssetGenImage(String assetName)
22+
: _assetName = assetName,
23+
super(assetName);
24+
final String _assetName;
25+
26+
Image image({
27+
Key key,
28+
ImageFrameBuilder frameBuilder,
29+
ImageLoadingBuilder loadingBuilder,
30+
ImageErrorWidgetBuilder errorBuilder,
31+
String semanticLabel,
32+
bool excludeFromSemantics = false,
33+
double width,
34+
double height,
35+
Color color,
36+
BlendMode colorBlendMode,
37+
BoxFit fit,
38+
AlignmentGeometry alignment = Alignment.center,
39+
ImageRepeat repeat = ImageRepeat.noRepeat,
40+
Rect centerSlice,
41+
bool matchTextDirection = false,
42+
bool gaplessPlayback = false,
43+
bool isAntiAlias = false,
44+
FilterQuality filterQuality = FilterQuality.low,
45+
}) {
46+
return Image(
47+
key: key,
48+
image: this,
49+
frameBuilder: frameBuilder,
50+
loadingBuilder: loadingBuilder,
51+
errorBuilder: errorBuilder,
52+
semanticLabel: semanticLabel,
53+
excludeFromSemantics: excludeFromSemantics,
54+
width: width,
55+
height: height,
56+
color: color,
57+
colorBlendMode: colorBlendMode,
58+
fit: fit,
59+
alignment: alignment,
60+
repeat: repeat,
61+
centerSlice: centerSlice,
62+
matchTextDirection: matchTextDirection,
63+
gaplessPlayback: gaplessPlayback,
64+
isAntiAlias: isAntiAlias,
65+
filterQuality: filterQuality,
66+
);
67+
}
68+
69+
String get path => _assetName;
70+
}

0 commit comments

Comments
 (0)