Flutter版本校验插件satisfied_version的使用

发布于 1周前 作者 htzhanglong 来自 Flutter

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

1 回复

更多关于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项目中实现版本校验功能!

回到顶部