Skip to content

chore: upgrade 7 major dependencies with API migrations#194

Merged
ericgriffin merged 6 commits into
mainfrom
chore/upgrade-dependencies
Apr 11, 2026
Merged

chore: upgrade 7 major dependencies with API migrations#194
ericgriffin merged 6 commits into
mainfrom
chore/upgrade-dependencies

Conversation

@ericgriffin

@ericgriffin ericgriffin commented Apr 11, 2026

Copy link
Copy Markdown
Member

Summary

Upgrade 7 direct dependencies with major version bumps, migrating all breaking API changes. Pins device_info_plus to 12.3.0 to work around an Xcode 16.2 compile error.

Follows up on #192 which upgraded 66 packages within existing constraints.

Changes

  • file_picker 10.x -> 11.x: FilePicker.platform.method() -> FilePicker.method() (static API)
  • flutter_local_notifications 18.x -> 21.x: positional -> named parameters for show, zonedSchedule, cancel, initialize
  • flutter_contacts 1.x -> 2.x: monolithic API -> sub-API pattern (permissions, native)
  • desktop_drop 0.4.x -> 0.7.x: XFile -> DropItem type in tests
  • googleapis 15.x -> 16.x (no API changes)
  • native_exif 0.6.x -> 0.7.x (no API changes)
  • timezone 0.10.x -> 0.11.x (no API changes)
  • Pinned device_info_plus to 12.3.0 via dependency_overrides (v12.4.0 calls NSProcessInfo.isiOSAppOnVision which is unavailable in Xcode 16.2)

Test Plan

  • flutter test passes (6,286 tests, 0 failures)
  • flutter analyze passes (0 issues)
  • CI passes on all 5 platforms (iOS, macOS, Android, Linux, Windows)
  • Manual testing on: macOS

Screenshots

N/A - no UI changes

Ran flutter pub upgrade to bring all packages to latest within existing
semver constraints (e.g. riverpod 3.1->3.3, drift 2.30->2.31,
go_router 17.0->17.2, lints 6.0->6.1). Fixed use_null_aware_elements
lint violations surfaced by lints 6.1.0 upgrade.
v12.4.0 calls NSProcessInfo.isiOSAppOnVision which is unavailable in
Xcode 16.2's SDK, causing a compile error on iOS. Pin back to 12.3.0
via dependency_overrides until upstream fixes the availability guard.
Upgrade major versions:
- file_picker 10.x -> 11.x (FilePicker.platform removed, use static methods)
- flutter_local_notifications 18.x -> 21.x (positional -> named params)
- flutter_contacts 1.x -> 2.x (static -> sub-API pattern)
- desktop_drop 0.4.x -> 0.7.x (XFile -> DropItem)
- googleapis 15.x -> 16.x
- native_exif 0.6.x -> 0.7.x
- timezone 0.10.x -> 0.11.x

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Upgrades 7 direct dependencies with major version bumps (plus a device_info_plus pin) and migrates the codebase to the new breaking APIs across file picking, local notifications, contacts access, and desktop drag-and-drop.

Changes:

  • Migrated file_picker usage from FilePicker.platform.* to the new static FilePicker.* API across import/export flows.
  • Updated flutter_local_notifications calls to named parameters and refreshed platform plugin registration/artifacts.
  • Migrated contacts import flow to flutter_contacts v2 sub-APIs and updated desktop drop tests to desktop_drop’s DropItemFile.

Reviewed changes

Copilot reviewed 18 out of 21 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
windows/flutter/generated_plugins.cmake Adds the Windows notifications plugin to the generated FFI plugin list.
test/shared/widgets/global_drop_target_test.dart Updates desktop_drop test scaffolding from XFile to DropItemFile.
pubspec.yaml Bumps major dependency versions and pins device_info_plus via dependency_overrides.
pubspec.lock Updates locked versions/checksums for upgraded dependencies (incl. new transitive deps).
macos/Podfile.lock Updates CocoaPods lockfile for upgraded plugins (incl. flutter_contacts).
macos/Flutter/GeneratedPluginRegistrant.swift Registers flutter_contacts plugin for macOS.
lib/features/universal_import/presentation/providers/universal_import_providers.dart Migrates import pickers to FilePicker.pickFiles(...).
lib/features/settings/presentation/providers/export_providers.dart Migrates backup export/import pickers to new FilePicker.* APIs.
lib/features/settings/presentation/providers/debug_log_providers.dart Migrates debug log save dialog to FilePicker.saveFile(...).
lib/features/dive_import/presentation/providers/uddf_import_providers.dart Migrates UDDF import picker to FilePicker.pickFiles(...).
lib/features/buddies/presentation/widgets/buddy_list_content.dart Migrates contact import to FlutterContacts.permissions + FlutterContacts.native.showPicker().
lib/features/backup/presentation/pages/backup_settings_page.dart Migrates backup save/import/directory pickers to FilePicker.* APIs.
lib/core/services/notification_service.dart Migrates notifications initialization/scheduling/show/cancel to new named-parameter APIs.
lib/core/services/export/uddf/uddf_full_export_service.dart Migrates UDDF export save dialog to FilePicker.saveFile(...).
lib/core/services/export/shared/file_export_utils.dart Migrates image/PDF save dialogs to FilePicker.saveFile(...).
lib/core/services/export/pdf/pdf_export_service.dart Migrates PDF export save dialog to FilePicker.saveFile(...).
lib/core/services/export/kml/kml_export_service.dart Migrates KML export save dialog to FilePicker.saveFile(...).
lib/core/services/export/excel/excel_export_service.dart Migrates Excel export save dialog to FilePicker.saveFile(...).
lib/core/services/export/csv/csv_export_service.dart Migrates CSV export save dialogs to FilePicker.saveFile(...).
lib/core/services/database_location_service.dart Migrates directory picker to FilePicker.getDirectoryPath(...).
ios/Podfile.lock Updates CocoaPods lockfile checksums for upgraded plugins.

Comment thread test/shared/widgets/global_drop_target_test.dart Outdated
flutter_local_notifications 21.x requires desugar_jdk_libs >= 2.1.4
but the project had 2.0.4, causing Android build failure.
Add MockFilePickerPlatform to exercise FilePicker.saveFile/pickFiles
code paths across CSV, Excel, KML, and file_export_utils services.
Rename _xFileFromBytes to _dropItemFromBytes in drop target test to
match the desktop_drop 0.7.x DropItem type.
Copilot AI review requested due to automatic review settings April 11, 2026 13:09

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 25 changed files in this pull request and generated 4 comments.

Comment thread test/helpers/mock_file_picker_platform.dart
Comment thread test/core/services/export/file_picker_save_test.dart Outdated
Comment thread test/core/services/export/csv/csv_export_service_test.dart Outdated
Comment thread lib/core/services/notification_service.dart
Re-export FilePickerPlatform from mock_file_picker_platform.dart so
test files avoid direct dependency on file_picker's internal src/ path.
@ericgriffin
ericgriffin merged commit 52444a2 into main Apr 11, 2026
15 of 16 checks passed
@github-project-automation github-project-automation Bot moved this from Backlog to Done in Submersion Release Tracker Apr 11, 2026
@ericgriffin
ericgriffin deleted the chore/upgrade-dependencies branch April 11, 2026 16:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants