40 lines
1.1 KiB
Dart
40 lines
1.1 KiB
Dart
import 'dart:math';
|
||
|
||
import 'package:flutter/services.dart';
|
||
|
||
class VersionUtils {
|
||
static const MethodChannel _kChannel = MethodChannel('version');
|
||
|
||
/// 应用安装
|
||
static void install(String path) {
|
||
_kChannel.invokeMethod<void>('install', {'path': path});
|
||
}
|
||
|
||
/// AppStore跳转
|
||
static void jumpAppStore() {
|
||
_kChannel.invokeMethod<void>('jumpAppStore');
|
||
}
|
||
|
||
static bool compareVersion(curV, reqV) {
|
||
if (curV != null && reqV != null) {
|
||
//将两个版本号拆成数字
|
||
var arr1 = curV.split('.'), arr2 = reqV.split('.');
|
||
int arr1Len = arr1.length;
|
||
int arr2Len = arr2.length;
|
||
int minLength = min(arr1Len, arr2Len), position = 0, diff = 0;
|
||
// 依次比较版本号每一位大小,当对比得出结果后跳出循环(后文有简单介绍)
|
||
while (position < minLength &&
|
||
((diff = int.parse(arr1[position]) - int.parse(arr2[position])) ==
|
||
0)) {
|
||
position++;
|
||
}
|
||
diff = (diff != 0) ? diff : (arr1.length - arr2.length);
|
||
//若curV大于reqV,则返回true
|
||
return diff > 0;
|
||
} else {
|
||
//输入为空
|
||
return false;
|
||
}
|
||
}
|
||
}
|