read static method
The project's config, or null when pub has not run. For a member of a
pub workspace (resolution: workspace) it is the workspace's.
Implementation
static PackageConfig? read(String projectRoot) {
final file = _resolvedFile(projectRoot, 'package_config.json');
if (file == null) return null;
final json = _readJson(file);
if (json is! Map) return null;
final base = file.parent.absolute.uri;
final packages = <String, ResolvedPackage>{};
for (final p in _list(json['packages'])) {
if (p is! Map) continue;
final name = p['name'];
final rootUri = p['rootUri'];
if (name is! String || rootUri is! String) continue;
final root = base.resolve(rootUri.endsWith('/') ? rootUri : '$rootUri/');
final packageUri = p['packageUri'];
final lib = root.resolve(packageUri is String ? packageUri : 'lib/');
packages[name] = ResolvedPackage(name, _path(root), _path(lib));
}
final flutterRoot = json['flutterRoot'];
return PackageConfig._(
_path(base.resolve('../')),
packages,
flutterRoot is String ? _path(Uri.parse(flutterRoot)) : null,
json['flutterVersion'] is String
? json['flutterVersion'] as String
: null,
);
}