checkVersion method

Future<void> checkVersion()

Implementation

Future<void> checkVersion() async {
  PackageInfo packageInfo = await PackageInfo.fromPlatform();

  try {
    _appCode = packageInfo.version;
  } on PlatformException {
    _appCode = 'Failed to get project version.';
  }

  try {
    _appVersion = packageInfo.buildNumber;
  } on PlatformException {
    _appVersion = 'Failed to get build number.';
  }

  try {
    _appPackageName = packageInfo.packageName;
  } on PlatformException {
    _appPackageName = 'Failed to get app ID.';
  }

  if (await CheckAppVersion().getJsonFile(_jsonUrl!)) {
    if (CheckAppVersion().appFile.appPackage == _appPackageName ||
        CheckAppVersion().appFile.bundleId == _appPackageName) {
      bool flag = false;
      if (_appVersion.length == 0) _appVersion = '0';
      String tempOldCode = _appCode + '.' + _appVersion;

      String tempNewCode = CheckAppVersion().appFile.newAppVersion! +
          '.' +
          CheckAppVersion().appFile.newAppCode!;

      var regEx = RegExp(r'^\d{1,2}', multiLine: true);

      for (int i = 0; i < 4; i++) {
        String oldNumber =
            regEx.allMatches(tempOldCode).map((m) => m[0]).toString();

        final startIndex = oldNumber.indexOf('(');
        final endIndex = oldNumber.indexOf(')', startIndex + '('.length);

        String newNumber =
            regEx.allMatches(tempNewCode).map((m) => m[0]).toString();

        final startNewIndex = newNumber.indexOf('(');
        final endNewIndex =
            newNumber.indexOf(')', startNewIndex + '('.length);

        tempOldCode = tempOldCode.replaceFirst(
            oldNumber.substring(startIndex + '('.length, endIndex), '');
        tempOldCode = tempOldCode.replaceFirst('.', '');
        tempNewCode = tempNewCode.replaceFirst(
            newNumber.substring(startNewIndex + '('.length, endNewIndex), '');
        tempNewCode = tempNewCode.replaceFirst('.', '');

        if (int.parse(
                oldNumber.substring(startIndex + '('.length, endIndex)) <
            int.parse(newNumber.substring(
                startNewIndex + '('.length, endNewIndex))) {
          flag = true;
          break;
        }
      }
      if (flag) {
        if (_cupertinoDialog != null && !_cupertinoDialog!)
          updateDialogAndroid(_context);
        else if (Platform.isAndroid)
          updateDialogAndroid(_context);
        else if (Platform.isIOS) updateDialogIos(_context);
      }
    }
  }
}