@@ -37,14 +37,26 @@ class NativeAssetsBuildPlanner {
37
37
required PackageLayout packageLayout,
38
38
required FileSystem fileSystem,
39
39
}) async {
40
- final workingDirectory = packageConfigUri.resolve ('../' );
41
- final result = await Process .run (dartExecutable.toFilePath (), [
42
- 'pub' ,
43
- 'deps' ,
44
- '--json' ,
45
- ], workingDirectory: workingDirectory.toFilePath ());
46
- final packageGraph = PackageGraph .fromPubDepsJsonString (
47
- result.stdout as String ,
40
+ final packageGraphJsonFile = fileSystem.file (
41
+ packageConfigUri.resolve ('package_graph.json' ),
42
+ );
43
+ final String packageGraphJson;
44
+ if (packageGraphJsonFile.existsSync ()) {
45
+ packageGraphJson = await packageGraphJsonFile.readAsString ();
46
+ } else {
47
+ // TODO: Either bump SDK constraint to dev release (but we can't while
48
+ // flutter_tools requires published stable packages). Or wait for Dart 3.8
49
+ // to be released to remove this fallback.
50
+ final workingDirectory = packageConfigUri.resolve ('../' );
51
+ final result = await Process .run (
52
+ dartExecutable.toFilePath (),
53
+ ['pub' , 'deps' , '--json' ],
54
+ workingDirectory: workingDirectory.toFilePath (),
55
+ );
56
+ packageGraphJson = result.stdout as String ;
57
+ }
58
+ final packageGraph = PackageGraph .fromPackageGraphJsonString (
59
+ packageGraphJson,
48
60
);
49
61
final packageGraphFromRunPackage = packageGraph.subGraph (
50
62
packageLayout.runPackageName,
@@ -144,12 +156,12 @@ class PackageGraph {
144
156
145
157
PackageGraph (this .map);
146
158
147
- /// Constructs a graph from the JSON produced by `dart pub deps --json` .
148
- factory PackageGraph .fromPubDepsJsonString (String json) =>
149
- PackageGraph .fromPubDepsJson (jsonDecode (json) as Map <dynamic , dynamic >);
159
+ factory PackageGraph .fromPackageGraphJsonString (String json) =>
160
+ PackageGraph .fromPackageGraphJson (
161
+ jsonDecode (json) as Map <dynamic , dynamic >,
162
+ );
150
163
151
- /// Constructs a graph from the JSON produced by `dart pub deps --json` .
152
- factory PackageGraph .fromPubDepsJson (Map <dynamic , dynamic > map) {
164
+ factory PackageGraph .fromPackageGraphJson (Map <dynamic , dynamic > map) {
153
165
final result = < String , List <String >> {};
154
166
final packages = map['packages' ] as List <dynamic >;
155
167
for (final package in packages) {
0 commit comments