Skip to content

Commit 1a866f2

Browse files
committed
Add support for flutter shaders
1 parent 66a64b2 commit 1a866f2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+2495
-31
lines changed

packages/command/bin/flutter_gen_command.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import 'package:flutter_gen_core/flutter_generator.dart';
55
import 'package:flutter_gen_core/utils/cast.dart';
66
import 'package:flutter_gen_core/version.gen.dart';
77

8-
98
void main(List<String> args) {
109
final parser = ArgParser();
1110
parser.addOption(

packages/command/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: flutter_gen
22
description: The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-based APIs.
3-
version: 5.8.0
3+
version: 5.9.0
44
homepage: https://github.com/FlutterGen/flutter_gen
55
repository: https://github.com/FlutterGen/flutter_gen
66
documentation: https://github.com/FlutterGen/flutter_gen
@@ -13,7 +13,7 @@ executables:
1313
fluttergen: flutter_gen_command
1414

1515
dependencies:
16-
flutter_gen_core: 5.8.0
16+
flutter_gen_core: 5.9.0
1717
args: ^2.0.0
1818

1919
dev_dependencies:

packages/command/test/flutter_gen_command_test.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import 'package:flutter_gen_core/version.gen.dart';
44
import 'package:test/test.dart';
55
import 'package:test_process/test_process.dart';
66

7-
87
final separator = Platform.pathSeparator;
98

109
void main() {

packages/core/lib/flutter_generator.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:dart_style/dart_style.dart';
44
import 'package:flutter_gen_core/generators/assets_generator.dart';
55
import 'package:flutter_gen_core/generators/colors_generator.dart';
66
import 'package:flutter_gen_core/generators/fonts_generator.dart';
7+
import 'package:flutter_gen_core/generators/shaders_generator.dart';
78
import 'package:flutter_gen_core/settings/config.dart';
89
import 'package:flutter_gen_core/utils/file.dart';
910
import 'package:path/path.dart';
@@ -13,13 +14,15 @@ class FlutterGenerator {
1314
this.pubspecFile, {
1415
this.buildFile,
1516
this.assetsName = 'assets.gen.dart',
17+
this.shadersName = 'shaders.gen.dart',
1618
this.colorsName = 'colors.gen.dart',
1719
this.fontsName = 'fonts.gen.dart',
1820
});
1921

2022
final File pubspecFile;
2123
final File? buildFile;
2224
final String assetsName;
25+
final String shadersName;
2326
final String colorsName;
2427
final String fontsName;
2528

@@ -69,6 +72,17 @@ class FlutterGenerator {
6972
stdout.writeln('[FlutterGen] Generated: $assetsPath');
7073
}
7174

75+
if (flutterGen.shaders.enabled && flutter.shaders.isNotEmpty) {
76+
final generated = await generateShaders(
77+
ShadersGenConfig.fromConfig(pubspecFile, config),
78+
formatter,
79+
);
80+
final shadersPath =
81+
normalize(join(pubspecFile.parent.path, output, shadersName));
82+
writer(generated, shadersPath);
83+
stdout.writeln('[FlutterGen] Generated: $shadersPath');
84+
}
85+
7286
if (flutterGen.fonts.enabled && flutter.fonts.isNotEmpty) {
7387
final generated = generateFonts(
7488
FontsGenConfig.fromConfig(config),

packages/core/lib/generators/shaders_generator.dart

Lines changed: 602 additions & 0 deletions
Large diffs are not rendered by default.

packages/core/lib/settings/config_default.dart

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,24 @@ flutter_gen:
3434
class_name: Assets
3535
exclude: []
3636
37+
shaders:
38+
# Optional
39+
enabled: true
40+
# Optional
41+
outputs:
42+
# Optional
43+
# Set to true if you want this package to be a package dependency
44+
# See: https://flutter.dev/docs/development/ui/assets-and-images#from-packages
45+
package_parameter_enabled: false
46+
# Optional
47+
# Available values:
48+
# - camel-case
49+
# - snake-case
50+
# - dot-delimiter
51+
style: dot-delimiter
52+
class_name: Shaders
53+
exclude: []
54+
3755
fonts:
3856
# Optional
3957
enabled: true
@@ -55,4 +73,6 @@ flutter:
5573
assets: []
5674
# See: https://flutter.dev/docs/cookbook/design/fonts#2-declare-the-font-in-the-pubspec
5775
fonts: []
76+
# See: https://docs.flutter.dev/ui/design/graphics/fragment-shaders
77+
shaders: []
5878
''';
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class FlavoredShader {
2+
const FlavoredShader({
3+
required this.path,
4+
this.flavors = const {},
5+
});
6+
7+
final String path;
8+
final Set<String> flavors;
9+
10+
FlavoredShader copyWith({String? path, Set<String>? flavors}) {
11+
return FlavoredShader(
12+
path: path ?? this.path,
13+
flavors: flavors ?? this.flavors,
14+
);
15+
}
16+
17+
@override
18+
String toString() => 'FlavoredShader(path: $path, flavors: $flavors)';
19+
}

packages/core/lib/settings/pubspec.dart

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

3435
@JsonKey(name: 'assets', required: true)
3536
final List<Object> assets;
3637

38+
@JsonKey(name: 'shaders', required: true)
39+
final List<Object> shaders;
40+
3741
@JsonKey(name: 'fonts', required: true)
3842
final List<FlutterFonts> fonts;
3943

@@ -57,6 +61,7 @@ class FlutterGen {
5761
required this.lineLength,
5862
required this.parseMetadata,
5963
required this.assets,
64+
required this.shaders,
6065
required this.fonts,
6166
required this.integrations,
6267
required this.colors,
@@ -74,6 +79,9 @@ class FlutterGen {
7479
@JsonKey(name: 'assets', required: true)
7580
final FlutterGenAssets assets;
7681

82+
@JsonKey(name: 'shaders', required: true)
83+
final FlutterGenAssets shaders;
84+
7785
@JsonKey(name: 'fonts', required: true)
7886
final FlutterGenFonts fonts;
7987

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

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

0 commit comments

Comments
 (0)