Skip to content

Commit 404084c

Browse files
authored
[go_router_builder] Cleans up builder code. (flutter#4356)
No functional change, this is a refactoring of the builder code and pull out external library dependency
1 parent 188a846 commit 404084c

46 files changed

Lines changed: 989 additions & 883 deletions

Some content is hidden

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

packages/go_router_builder/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 2.2.1
2+
3+
* Cleans up go_router_builder code.
4+
15
## 2.2.0
26

37
* Adds replace methods to the generated routes.

packages/go_router_builder/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,3 +379,9 @@ class MyGoRouteData extends GoRouteData {
379379
```
380380

381381
An example is available [here](https://github.com/flutter/packages/blob/main/packages/go_router_builder/example/lib/shell_route_with_keys_example.dart).
382+
383+
## Run tests
384+
385+
To run unit tests, run command `dart tool/run_tests.dart` from `packages/go_router_builder/`.
386+
387+
To run tests in examples, run `flutter test` from `packages/go_router_builder/example`.

packages/go_router_builder/example/lib/all_types.g.dart

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

packages/go_router_builder/example/lib/main.g.dart

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

packages/go_router_builder/example/lib/shell_route_example.g.dart

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

packages/go_router_builder/example/lib/shell_route_with_keys_example.g.dart

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

packages/go_router_builder/lib/src/go_router_generator.dart

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@ const Map<String, String> _annotations = <String, String>{
1919
};
2020

2121
/// A [Generator] for classes annotated with a typed go route annotation.
22-
class GoRouterGenerator extends GeneratorForAnnotation<void> {
22+
class GoRouterGenerator extends Generator {
2323
/// Creates a new instance of [GoRouterGenerator].
2424
const GoRouterGenerator();
2525

26-
@override
27-
TypeChecker get typeChecker => TypeChecker.any(
26+
TypeChecker get _typeChecker => TypeChecker.any(
2827
_annotations.keys.map((String annotation) =>
2928
TypeChecker.fromUrl('$_routeDataUrl#$annotation')),
3029
);
@@ -34,11 +33,7 @@ class GoRouterGenerator extends GeneratorForAnnotation<void> {
3433
final Set<String> values = <String>{};
3534
final Set<String> getters = <String>{};
3635

37-
for (final String annotation in _annotations.keys) {
38-
final TypeChecker typeChecker =
39-
TypeChecker.fromUrl('$_routeDataUrl#$annotation');
40-
_generateForAnnotation(library, typeChecker, buildStep, values, getters);
41-
}
36+
generateForAnnotation(library, values, getters);
4237

4338
if (values.isEmpty) {
4439
return '';
@@ -54,19 +49,20 @@ ${getters.map((String e) => "$e,").join('\n')}
5449
].join('\n\n');
5550
}
5651

57-
void _generateForAnnotation(
52+
/// Generates code for the `library` based on annotation.
53+
///
54+
/// This public method is for testing purposes and should not be called
55+
/// directly.
56+
void generateForAnnotation(
5857
LibraryReader library,
59-
TypeChecker typeChecker,
60-
BuildStep buildStep,
6158
Set<String> values,
6259
Set<String> getters,
6360
) {
6461
for (final AnnotatedElement annotatedElement
65-
in library.annotatedWith(typeChecker)) {
66-
final InfoIterable generatedValue = generateForAnnotatedElement(
62+
in library.annotatedWith(_typeChecker)) {
63+
final InfoIterable generatedValue = _generateForAnnotatedElement(
6764
annotatedElement.element,
6865
annotatedElement.annotation,
69-
buildStep,
7066
);
7167
getters.add(generatedValue.routeGetterName);
7268
for (final String value in generatedValue) {
@@ -76,11 +72,9 @@ ${getters.map((String e) => "$e,").join('\n')}
7672
}
7773
}
7874

79-
@override
80-
InfoIterable generateForAnnotatedElement(
75+
InfoIterable _generateForAnnotatedElement(
8176
Element element,
8277
ConstantReader annotation,
83-
BuildStep buildStep,
8478
) {
8579
final String typedAnnotation =
8680
annotation.objectValue.type!.getDisplayString(withNullability: false);
@@ -105,6 +99,7 @@ ${getters.map((String e) => "$e,").join('\n')}
10599
);
106100
}
107101

108-
return RouteConfig.fromAnnotation(annotation, element).generateMembers();
102+
return RouteBaseConfig.fromAnnotation(annotation, element)
103+
.generateMembers();
109104
}
110105
}

0 commit comments

Comments
 (0)