What does plus one (+1) mean in dart's dependency versioning

+ means it is a regular release build,
while - would indicate a pre-release build.
(No build number after x.y.z also indicates a release build like +)

The following part of the version is some build number that does not have a fixed format.

See also

  • https://www.dartlang.org/tools/pub/versioning
  • https://semver.org/spec/v2.0.0-rc.1.html

From https://semver.org/spec/v2.0.0-rc.1.html

  1. A pre-release version MAY be denoted by appending a dash and a series of dot separated identifiers immediately following the patch version. Identifiers MUST be comprised of only ASCII alphanumerics and dash [0-9A-Za-z-]. Pre-release versions satisfy but have a lower precedence than the associated normal version. Examples: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92.

  2. A build version MAY be denoted by appending a plus sign and a series of dot separated identifiers immediately following the patch version or pre-release version. Identifiers MUST be comprised of only ASCII alphanumerics and dash [0-9A-Za-z-]. Build versions satisfy and have a higher precedence than the associated normal version. Examples: 1.0.0+build.1, 1.3.7+build.11.e0f985a.

Hint: Pre-release versions (with -) are ignored by flutter packages get unless the - is explicitly part of the version constraint in pubspec.yaml like

foo_package: ^1.2.3-beta

In Dart conventions the +1 is used when publishing a patch release where the first number in the version is 0. The version 1.2.1+1 is not idiomatic. Essentially there are two patterns in use depending on whether the author considers the package stable enough to reach 1.0.0:

  • 0.major.minor+patch
  • major.minor.patch