getLatestVersion method

PackageRef? getLatestVersion(
  1. String packageName, {
  2. bool includePreRelease = false,
})

Return the most recent verison of the given package contained in the cache. This method will prefer to return only release verions. If includePreRelease is true, then the very latest verision will be returned, include pre-release versions.

Implementation

PackageRef? getLatestVersion(String packageName,
    {bool includePreRelease: false}) {
  List<PackageRef> refs = getAllPackageVersions(packageName);

  if (refs.isEmpty) return null;
  if (refs.length == 1) return refs.first;

  PackageRef latest = refs.first;

  if (includePreRelease) {
    for (int i = 1; i < refs.length; i++) {
      if (refs[i].version > latest.version) latest = refs[i];
    }
  } else {
    List<Version> versions = refs.map((ref) => ref.version).toList();
    Version latestVersion = Version.primary(versions);
    for (PackageRef ref in refs) {
      if (ref.version == latestVersion) latest = ref;
    }
  }

  return latest;
}