Flutter版本校验插件satisfied_version的使用
Flutter版本校验插件satisfied_version的使用
satisfied_version
是一个用于比较和检查版本号是否满足特定条件的Flutter插件。它可以处理格式为 major.minor.patch
的版本号和构建编号(整数)。
使用方法
字符串:比较两个版本号并检查条件
import 'package:satisfied_version/satisfied_version.dart';
void main() {
print(SatisfiedVersion.string('1.0.0', '>=1.0.0')); // => true
print(SatisfiedVersion.string('1.0.0', '<=1.0.0')); // => true
print(SatisfiedVersion.string('1.0.0', '>1.0.0')); // => false
print(SatisfiedVersion.string('1.0.1', '>1.0.0')); // => true
print(SatisfiedVersion.string('1.0.0', '<1.0.0')); // => false
print(SatisfiedVersion.string('0.0.100', '>0.0.1')); // => true
print(SatisfiedVersion.string('1.0.0', '=1.0.0')); // => true
print(SatisfiedVersion.string('1.0.0', '==1.0.0')); // => true
// 默认返回 `appVersion == version`
}
// 也可以使用整数
print(SatisfiedVersion.number(100, '>=100')); // => true
// 支持所有上述操作符
列表:如果源列表中有任何满足条件的版本,则返回 true
import 'package:satisfied_version/satisfied_version.dart';
void main() {
const versions = ['<1.0.0', '>=1.0.2'];
print(SatisfiedVersion.list('1.0.0', versions)); // => false
print(SatisfiedVersion.list('1.0.3', versions)); // => true
print(SatisfiedVersion.list('0.0.9', versions)); // => true
// 构建编号
const versions = ['<100', '>=102'];
print(SatisfiedVersion.listNumber(100, versions)); // => false
// 支持所有上述操作符
}
范围内的版本比较
import 'package:satisfied_version/satisfied_version.dart';
void main() {
const versionsWithin = ['>1.0.0', '<1.5.0', '1.6.0', '>=2.0.0', '<2.0.2'];
print(SatisfiedVersion.list('1.0.0', versionsWithin)); // => false
print(SatisfiedVersion.list('1.1.0', versionsWithin)); // => true
print(SatisfiedVersion.list('1.5.1', versionsWithin)); // => false
print(SatisfiedVersion.list('1.6.0', versionsWithin)); // => true
print(SatisfiedVersion.list('2.0.1', versionsWithin)); // => true
print(SatisfiedVersion.list('2.0.2', versionsWithin)); // => false
// 构建编号
const versionsWithin = ['>100', '<150', '160', '>=200', '<202'];
print(SatisfiedVersion.listNumber(100, versionsWithin)); // => false
// 支持所有上述操作符
}
映射:返回满足条件的键值,默认为 false
import 'package:satisfied_version/satisfied_version.dart';
void main() {
const versions = {'<1.0.0': true, '>=1.0.2': false};
print(SatisfiedVersion.map('1.0.0', versions)); // => false
print(SatisfiedVersion.map('1.0.3', versions)); // => false
print(SatisfiedVersion.map('0.0.9', versions)); // => true
// 构建编号
const versions = {'<100': true, '>=102': false};
print(SatisfiedVersion.map(100, versions)); // => false
// 支持所有上述操作符
}
使用辅助函数创建版本字符串或整数以避免错误
import 'package:satisfied_version/satisfied_version.dart';
void main() {
final version = SatisfiedVersion.createVersion(SatisfiedCondition.greater, "1.0.0"); // '>1.0.0'
final number = SatisfiedVersion.createNumber(SatisfiedCondition.greater, 100); // '>100'
}
扩展:为字符串提供的扩展方法使插件更易于使用
import 'package:satisfied_version/satisfied_version.dart';
void main() {
// 字符串
final result = '1.0.0'.satisfiedWith('<=1.0.0'); // => true
final result = '1.0.0'.satisfiedWith(['<=1.0.0', '>2.0.0']); // => true
final result = '1.0.0'.satisfiedWith({'<=1.0.0': false}); // => false
// 整数
final result = 100.satisfiedWith('<=1.0.0'); // => true
final result = 100.satisfiedWith(['<=1.0.0', '>2.0.0']); // => true
final result = 100.satisfiedWith({'<=1.0.0': false}); // => false
}
额外参数
-
对于所有方法:
defaultCondition
是默认条件,如果比较的版本号没有提供条件,默认值为SatisfiedCondition.equal
。
-
对于特定的
Map
方法:defaultValue
是当appVersion
不在任何范围内时Map
的默认结果,默认值为false
。
示例代码
import 'package:flutter/material.dart';
import 'package:satisfied_version/satisfied_version.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Satisfied Version Example')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('1.0.0 >= 1.0.0: ${SatisfiedVersion.string('1.0.0', '>=1.0.0')}'),
Text('1.0.0 <= 1.0.0: ${SatisfiedVersion.string('1.0.0', '<=1.0.0')}'),
Text('1.0.0 > 1.0.0: ${SatisfiedVersion.string('1.0.0', '>1.0.0')}'),
Text('1.0.1 > 1.0.0: ${SatisfiedVersion.string('1.0.1', '>1.0.0')}'),
Text('1.0.0 < 1.0.0: ${SatisfiedVersion.string('1.0.0', '<1.0.0')}'),
Text('0.0.100 > 0.0.1: ${SatisfiedVersion.string('0.0.100', '>0.0.1')}'),
Text('1.0.0 == 1.0.0: ${SatisfiedVersion.string('1.0.0', '==1.0.0')}'),
Text('100 >= 100: ${SatisfiedVersion.number(100, '>=100')}'),
Text('1.0.0 in [>=1.0.2, <1.0.0]: ${SatisfiedVersion.list('1.0.0', ['>=1.0.2', '<1.0.0'])}'),
Text('1.0.3 in [>=1.0.2, <1.0.0]: ${SatisfiedVersion.list('1.0.3', ['>=1.0.2', '<1.0.0'])}'),
Text('1.0.0 in {<1.0.0: true, >=1.0.2: false}: ${SatisfiedVersion.map('1.0.0', {'<1.0.0': true, '>=1.0.2': false})}'),
Text('1.0.3 in {<1.0.0: true, >=1.0.2: false}: ${SatisfiedVersion.map('1.0.3', {'<1.0.0': true, '>=1.0.2': false})}'),
],
),
),
),
);
}
}
以上示例展示了如何在Flutter应用中使用 satisfied_version
插件进行版本号的比较和检查。希望这些示例对你有所帮助!
更多关于Flutter版本校验插件satisfied_version的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter版本校验插件satisfied_version的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用satisfied_version
插件来进行版本校验的示例代码。
首先,确保你已经在pubspec.yaml
文件中添加了satisfied_version
依赖:
dependencies:
flutter:
sdk: flutter
satisfied_version: ^x.y.z # 替换为最新版本号
然后,运行flutter pub get
来获取依赖。
接下来,在你的Flutter应用中,你可以按照以下步骤使用satisfied_version
插件来校验版本。
1. 导入插件
在你的Dart文件中(例如main.dart
),导入satisfied_version
插件:
import 'package:satisfied_version/satisfied_version.dart';
2. 校验当前版本
假设你希望当前应用版本必须大于等于1.0.0
,你可以使用以下代码进行校验:
void main() {
// 获取当前应用的版本信息
PackageInfo packageInfo = PackageInfo.fromPlatform();
String currentVersion = packageInfo.version;
// 定义期望的最小版本
String requiredVersion = "1.0.0";
// 使用satisfied_version插件进行版本校验
bool isVersionSatisfied = isVersionSatisfied(currentVersion, requiredVersion);
if (isVersionSatisfied) {
runApp(MyApp());
} else {
// 如果版本不满足要求,可以显示一个错误消息或者进行其他处理
runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('版本校验失败'),
),
body: Center(
child: Text('当前版本 ${currentVersion} 不满足最低版本要求 ${requiredVersion}.'),
),
),
));
}
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo Home Page'),
),
body: Center(
child: Text('Hello, Flutter!'),
),
);
}
}
3. 注意事项
-
上述代码中的
PackageInfo.fromPlatform()
方法用于获取当前应用的版本信息,它来自于package_info
插件。因此,你还需要在pubspec.yaml
中添加package_info
依赖:dependencies: flutter: sdk: flutter satisfied_version: ^x.y.z # 替换为最新版本号 package_info: ^x.y.z # 替换为最新版本号
-
运行
flutter pub get
来获取package_info
依赖。 -
satisfied_version
插件的核心功能是通过isVersionSatisfied
函数来实现的,该函数通常接受两个参数:当前版本和所需版本,并返回一个布尔值表示版本是否满足要求。不过,satisfied_version
插件的具体实现和API可能会有所不同,因此请参考该插件的官方文档和示例代码来获取最新和最准确的信息。
希望这个示例能够帮助你在Flutter项目中实现版本校验功能!