Skip to content

chore: state the Flutter, Dart, iOS and Android minimums the dependencies require - #21

Merged
onamfc merged 4 commits into
mainfrom
chore/pubspec-minimums
Oct 28, 2026
Merged

onamfc merged 4 commits into
mainfrom
chore/pubspec-minimums

Conversation

@onamfc

@onamfc onamfc commented Oct 27, 2026

Copy link
Copy Markdown
Member

Builds on #20 (the README already states these minimums). This PR targets docs/readme-accuracy; once #20 merges it will retarget to main.

Why

pubspec.yaml declared sdk: '>=3.0.0 <4.0.0' and flutter: '>=3.10.0', but the oldest versions the SDK's own constraints accept need more:

Dependency (oldest accepted) Dart Flutter iOS Android minSdk
app_links 7.0.0 ^3.10.0 >=3.38.1 13.0 24
device_info_plus 13.1.0 >=3.10.0 >=3.38.1 12.0 19
package_info_plus 10.1.0 >=3.10.0 >=3.38.1 12.0 19

Every accepted app_links (7.0.0 through 7.2.2) needs iOS 13 and Android API 24. An older toolchain could never resolve the package, so the stated range was simply wrong; nothing changes for an app that builds today.

Changes

  • pubspec.yaml: sdk: '>=3.10.0 <4.0.0', flutter: '>=3.38.1'.
  • Example app: same environment constraints (it said Dart 2.12 / Flutter 3.0), platform :ios, '13.0' set in the Podfile (it was commented out), and minSdk = 24 stated explicitly instead of inheriting Flutter's default.
  • CHANGELOG.md: an Unreleased entry.
  • Separate style: commit: raising the language version to 3.10 switches dart format to the current style and turns on the use_super_parameters / use_null_aware_elements lints. CI runs analyze, a format check and a generated-code check, so this commit applies dart format, dart fix --apply and build_runner. It does not change behavior ('appToken': ?appToken leaves the key out when it is null, the same as the if it replaces).

Dependency constraints are unchanged. The caret ranges already admit the newest compatible releases, and raising their floors would push the minimum Flutter higher (app_links 7.2.x needs Flutter 3.44) for no gain.

Verified

  • flutter pub get, flutter analyze (no issues), dart format --set-exit-if-changed . (0 changed), and build_runner leave lib/ unchanged. Run on Flutter 3.44.1.
  • flutter test: 174 tests pass.
  • flutter pub publish --dry-run validates, apart from the expected warning about uncommitted files before the commit.

Not verified: a build on exactly Flutter 3.38.1 / Dart 3.10.0 (only 3.44.1 is installed).

Follow-up to consider

android_play_install_referrer is marked discontinued on pub.dev, replaced by play_install_referrer. Its latest release needs Flutter 3.44 and Dart 3.12, so switching would raise the minimums again. It is left as it is here.

- Requirements: Flutter 3.38.1+, Dart 3.10+, iOS 13.0+, Android API 24+.
  Every app_links version the SDK accepts needs iOS 13 and minSdk 24, and the
  oldest needs Flutter 3.38.1 (as do device_info_plus 13.1 and
  package_info_plus 10.1); the README said Flutter 3.10, iOS 12, API 21.
- Flutter's built-in deep linking: since Flutter 3.27 it's on by default and
  conflicts with app_links, so it must be turned off, not only "if you also
  use it". Adds the opt-out snippets from Flutter's breaking-change note to
  Platform Setup (the iOS key takes <false/>, not NO).
- Quick Start: shows appToken, and says apiKey is only needed for createLink.
- Privacy: no advertising IDs is the accurate claim; installs on Android are
  matched by the Play install referrer where available; the SDK stores the
  install ID the server assigns. Data collected now lists the platform, the
  Play install referrer and an optional app-supplied device ID.
- Android setup: minSdk 24 and the Play App Signing fingerprint.
…cies require

The oldest app_links, device_info_plus and package_info_plus versions the
SDK accepts need Flutter 3.38.1 and Dart 3.10, and every accepted app_links
needs iOS 13 and Android API 24. Raise the package and example environment
constraints to match, and set the example's iOS platform and minSdk
explicitly.
Raising the language version to 3.10 switches dart format to the current
style and enables the super-parameter and null-aware-element lints. Apply
dart format, dart fix and regenerate the generated sources so analyze,
the format check and the generated-code check pass. No behavior change.
Base automatically changed from docs/readme-accuracy to main October 28, 2026 06:13
@onamfc
onamfc merged commit 9cd4cc0 into main Oct 28, 2026
4 checks passed
@onamfc
onamfc deleted the chore/pubspec-minimums branch October 28, 2026 06:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants