satisfied_version 0.4.2 copy "satisfied_version: ^0.4.2" to clipboard
satisfied_version: ^0.4.2 copied to clipboard

Compare and check whether the version is satisfied with provided version (or build number) in String, List, or Map.

Satisfied Version #

Compare and check whether the version is satisfied with provided version (or build number) in String, List, or Map.

Play With The Satisfied Version #

https://pub.lamnhan.dev/satisfied_version

Usage #

Supports versions with format major.minor.patch and build number (integer).

String: Compare 2 version with conditions #

SatisfiedVersion.string('1.0.0', '>=1.0.0') // => true
SatisfiedVersion.string('1.0.0', '<=1.0.0') // => true

SatisfiedVersion.string('1.0.0', '>1.0.0') // => false
SatisfiedVersion.string('1.0.1', '>1.0.0') // => true
SatisfiedVersion.string('1.0.0', '<1.0.0') // => false

SatisfiedVersion.string('0.0.100', '>0.0.1') // => true

SatisfiedVersion.string('1.0.0', '=1.0.0') // => true
SatisfiedVersion.string('1.0.0', '==1.0.0') // => true
// Default is return `appVersion == version`
copied to clipboard

You can also use with integer like this:

SatisfiedVersion.number(100, '>=100') // => true
// Supports all above operators
copied to clipboard

List: Return true if there is any satisfied version in sources #

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
copied to clipboard

With build number:

const versions = ['<100', '>=102'];
print(SatisfiedVersion.listNumber(100, versions)); // => false
// Supports all above operators
copied to clipboard

You can also compare the version within the range:

// You can input a shuffled list of values, the plugin will sort it for you.
// But I recommend you to sort it yourself to make it easier to maintain.
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
copied to clipboard

With build number:

const versionsWithin = ['>100', '<150', '160', '>=200', '<202'];
print(SatisfiedVersion.listNumber(100, versionsWithin)); // => false
// Supports all above operators
copied to clipboard

Map: Return value of the satisfied key. Default is false #

  • preferTrue = true: Return true if it has at least 1 true condition.
  • preferTrue = false: Return false if it has at least 1 false condition. Default.
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
copied to clipboard

With build number:

const versions = {'<100' : true, '>=102' : false};
print(SatisfiedVersion.map(100, versions)); // => false
// Supports all above operators
copied to clipboard

Use helper to create a version in String or Interger to avoid mistake #

final version = SatisfiedVersion.createVersion(SatisfiedCondition.greater, "1.0.0"); // '>1.0.0'
final number = SatisfiedVersion.createNumber(SatisfiedCondition.greater, 100); // '>100'
copied to clipboard

Extension: There is also a extension for String that help you easier to use this plugin #

// string
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

// integer
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
copied to clipboard

Use VersionComparator #

The VersionComparator overrides all comparison operators, letting you use >, <, >=, etc. for straightforward version comparisons.

final a = VersionComparator('1.0.0');
final b = VersionComparator('1.0.1');

print(a > b); // false
print(a >= b); // false
print(a < b); // true
print(a <= b); // true
print(a == b); // false
print(a != b); // true
copied to clipboard

Additional Parameters #

  • For all:

    • defaultCondition is the default condition if the compared version is provided without condition. Default value is SatisfiedCondition.equal.
  • For specific Map:

    • defaultValue is the default result for Map when appVersion is not in any range. Default is set to false.
3
likes
160
points
400
downloads

Publisher

verified publisherlamnhan.dev

Weekly Downloads

2024.08.19 - 2025.03.03

Compare and check whether the version is satisfied with provided version (or build number) in String, List, or Map.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

More

Packages that depend on satisfied_version