checkVersion method
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);
}
}
}
}