latestVersion property Null safety

Version latestVersion

Returns the latest version of the app.

Implementation

Version get latestVersion {
  final strippedToVersion = <Version, Version>{};

  this?.forEach((element) {
    final name = element.name ?? Version.none.toString();
    final buildList = (element.versionCodes ?? []).map(int.parse).toList()
      ..sort();

    var latestBuildNumber = 0;
    try {
      latestBuildNumber = buildList.last;
    } catch (_) {}

    if (name.contains('(')) {
      final versionStr = name.substring(
        name.indexOf('(') + 1,
        name.indexOf(')'),
      );

      if (versionStr.isNotEmpty) {
        final version = Version.parse(versionStr).copy(
          build: latestBuildNumber.toString(),
        );

        strippedToVersion.addAll({
          version.stripPreRelease(): version,
        });
      }
    } else {
      final version = Version.parse(name).copy(
        build: latestBuildNumber.toString(),
      );

      strippedToVersion.addAll({
        version.stripPreRelease(): version,
      });
    }
  });

  final primary = Version.primary(strippedToVersion.keys.toList());
  return strippedToVersion[primary] ?? Version.none;
}