on_upgrade 1.1.0
on_upgrade: ^1.1.0 copied to clipboard

Local upgrade checker plugin. Provides the ability to compare the currently running app version against a saved one.

Pub Version codecov GitHub Workflow Status GitHub likes popularity pub points

OnUpgrade #

A simple upgrade checker plugin, to e.g. migrate data between app updates or to display a change log with new features to your users.

Features #

  • Contains a default implementation using the shared preferences of the platform to persist the last known version
  • Minimal effort to check if an app upgrade is given and to update the persisted value
  • Possibility to implement custom getters and setters for the persisted version (e.g. if the last known app version is already available via a database)

Usage #

Getting Started #

Add this to your package's pubspec.yaml file:

  on_upgrade: ^1.1.0

More information on pub.dev.

Examples #

For full examples please see the example app.

Default Implementation #

final onUpgrade = OnUpgrade();
final isNewVersion = await onUpgrade.isNewVersion();
if (isNewVersion.state == UpgradeState.upgrade) {
  await onUpgrade.updateLastVersion();

Execute managed / multiple upgrades

final upgrades = {
  '1.0.0': myDataMigrationOrNewFeatureDialogForVersion1,
  '1.5.0': myDataMigrationOrNewFeatureDialogForVersion15

final onMultipleUpgrade = OnUpgrade();
final isNewVersionMultiple = await onMultipleUpgrade.isNewVersion();
if (isNewVersionMultiple.state == UpgradeState.upgrade) {
  await isNewVersionMultiple.executeUpgrades(upgrades);
  await onMultipleUpgrade.updateLastVersion();

Custom Implementation #

Future<String> customVersionGetter() async {
    // Your implementation. Load the last known version.
    // Must return an empty string if no initial version is known (on the first app start, before updateLastVersion() was called the first time).

Future<bool> customVersionSetter([String? version]) async {
    // Your implementation. Update the last known version.
    // Perform the upgrade check before calling this function.

final onUpgradeCustom = OnUpgrade(customVersionUpdate: customVersionSetter, customVersionLookup: customVersionGetter);
final isCustomNewVersion = await onUpgradeCustom.isNewVersion();
if (isCustomNewVersion.state == UpgradeState.upgrade) {
  await onUpgrade.updateLastVersion();

How to contribute #

If you are interested in contributing, please have a look into the contribution guide. Every idea, bug report or line of code is heavily appreciated.

pub points



Local upgrade checker plugin. Provides the ability to compare the currently running app version against a saved one.

Repository (GitHub)
View/report issues


API reference


Apache-2.0 (LICENSE)


flutter, package_info_plus, pub_semver, shared_preferences


Packages that depend on on_upgrade