Skip to content

Commit f192956

Browse files
authored
Refactor (#231)
* chore: upgrade sdk versions * chore: update sample codes * refactor: delete unneeded files
1 parent 1691d9b commit f192956

File tree

10 files changed

+131
-95
lines changed

10 files changed

+131
-95
lines changed

.vscode/settings.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"dart.flutterSdkPath": "~/.asdf/installs/flutter/2.5.3-stable",
3-
"dart.sdkPath": "~/.asdf/installs/dart/2.14.4/dart-sdk"
2+
"dart.flutterSdkPath": "~/.asdf/installs/flutter/3.0.1-stable",
3+
"dart.sdkPath": "~/.asdf/installs/dart/2.17.1/dart-sdk"
44
}

example/pubspec.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ dependencies:
1717
flare_flutter: ^3.0.2
1818
rive: ^0.8.1
1919

20+
# Dependency check
21+
collection: ^1.15.0
22+
crypto: ^3.0.0
23+
glob: ^2.0.0
24+
2025
json_annotation: ^4.5.0
2126
freezed_annotation: ^2.0.3
2227

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources>
3+
<color name="white">#FFFFFF</color>
4+
<color name="black">#000000</color>
5+
<color name="gray_70">#EEEEEE</color>
6+
<color name="gray_410">#979797</color>
7+
</resources>

example_resources/lib/gen/colors.gen.dart

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

example_resources/pubspec.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ flutter_gen:
3030
enabled: true
3131
package_parameter_enabled: true
3232

33+
fonts:
34+
enabled: true
35+
36+
colors:
37+
enabled: true
38+
inputs:
39+
- assets/color/colors.xml
40+
41+
3342
flutter:
3443
assets:
3544
- assets/images/

packages/core/lib/flutter_generator.dart

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import 'dart:io';
22

33
import 'package:dart_style/dart_style.dart';
4-
import 'package:flutter_gen_core/utils/version.dart';
54
import 'package:path/path.dart';
65

76
import 'generators/assets_generator.dart';
@@ -41,10 +40,7 @@ class FlutterGenerator {
4140
}
4241

4342
Future<void> build({Config? config}) async {
44-
stdout.writeln(flutterGenVersion);
45-
4643
config ??= await getConfig();
47-
4844
if (config == null) return;
4945

5046
final flutter = config.pubspec.flutter;

packages/core/lib/settings/config.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'dart:io';
22

3+
import 'package:flutter_gen_core/utils/version.dart';
34
import 'package:path/path.dart';
45
import 'package:yaml/yaml.dart';
56

@@ -14,7 +15,7 @@ class Config {
1415
}
1516

1617
Future<Config> loadPubspecConfig(File pubspecFile) async {
17-
stdout.writeln('FlutterGen Loading ... '
18+
stdout.writeln('$flutterGenVersion Loading ... '
1819
'${normalize(join(
1920
basename(pubspecFile.parent.path),
2021
basename(pubspecFile.path),

packages/runner/lib/flutter_gen_builder.dart

Lines changed: 0 additions & 83 deletions
This file was deleted.
Lines changed: 78 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,82 @@
1+
import 'dart:collection';
2+
import 'dart:io';
3+
14
import 'package:build/build.dart';
5+
import 'package:collection/collection.dart';
6+
import 'package:crypto/crypto.dart';
7+
import 'package:flutter_gen_core/flutter_generator.dart';
8+
import 'package:flutter_gen_core/settings/config.dart';
9+
10+
import 'package:glob/glob.dart';
11+
12+
Builder build(BuilderOptions options) => FlutterGenBuilder();
13+
14+
class FlutterGenBuilder extends Builder {
15+
final FlutterGenerator generator = FlutterGenerator(File('pubspec.yaml'));
16+
_FlutterGenBuilderState? _currentState;
17+
18+
@override
19+
Future<void> build(BuildStep buildStep) async {
20+
final config = await generator.getConfig();
21+
if (config == null) return;
22+
23+
final state = await _createState(config, buildStep);
24+
if (_currentState != null && _currentState!.equals(state)) return;
25+
_currentState = state;
26+
27+
await generator.build(config: config);
28+
}
29+
30+
@override
31+
Map<String, List<String>> get buildExtensions => {
32+
"\$package\$": ['.gen.dart']
33+
};
34+
35+
Future<_FlutterGenBuilderState> _createState(
36+
Config config, BuildStep buildStep) async {
37+
final pubspec = config.pubspec;
38+
39+
final HashSet<String> assets = HashSet();
40+
if (pubspec.flutterGen.assets.enabled) {
41+
for (var assetInput in pubspec.flutter.assets) {
42+
if (assetInput.isEmpty) continue;
43+
if (assetInput.endsWith("/")) assetInput += "*";
44+
await for (var assetId in buildStep.findAssets(Glob(assetInput))) {
45+
assets.add(assetId.path);
46+
}
47+
}
48+
}
49+
50+
final HashMap<String, Digest> colors = HashMap();
51+
if (pubspec.flutterGen.colors.enabled) {
52+
for (var colorInput in pubspec.flutterGen.colors.inputs) {
53+
if (colorInput.isEmpty) continue;
54+
await for (var assetId in buildStep.findAssets(Glob(colorInput))) {
55+
final digest = await buildStep.digest(assetId);
56+
colors[assetId.path] = digest;
57+
}
58+
}
59+
}
60+
61+
final pubspecAsset =
62+
await buildStep.findAssets(Glob(config.pubspecFile.path)).single;
63+
64+
final pubspecDigest = await buildStep.digest(pubspecAsset);
65+
66+
return _FlutterGenBuilderState(pubspecDigest, assets, colors);
67+
}
68+
}
69+
70+
class _FlutterGenBuilderState {
71+
final Digest pubspecDigest;
72+
final HashSet<String> assets;
73+
final HashMap<String, Digest> colors;
274

3-
import 'flutter_gen_builder.dart';
75+
_FlutterGenBuilderState(this.pubspecDigest, this.assets, this.colors);
476

5-
Builder build(BuilderOptions options) {
6-
return FlutterGenBuilder();
77+
bool equals(_FlutterGenBuilderState state) {
78+
return pubspecDigest == state.pubspecDigest &&
79+
const SetEquality().equals(assets, state.assets) &&
80+
const MapEquality().equals(colors, state.colors);
81+
}
782
}

packages/runner/pubspec.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,10 @@ environment:
1313
dependencies:
1414
flutter_gen_core: ^4.1.6
1515
build: '>=2.0.0 <3.0.0'
16-
collection: ^1.15.0
16+
collection: ^1.16.0
1717
crypto: ^3.0.2
1818
glob: ^2.0.2
1919

2020
dev_dependencies:
2121
flutter_lints: ^2.0.1
2222
build_test: '>=2.0.0 <3.0.0'
23-
flutter_lints: '>=1.0.4 <2.0.0'

0 commit comments

Comments
 (0)