Skip to content

chore: align CI Flutter to 3.44.1 and resolve analyzer 7→8 toolchain split#612

Closed
AndreaDiazCorreia wants to merge 2 commits into
mainfrom
chore/align-ci-flutter-analyzer-611
Closed

chore: align CI Flutter to 3.44.1 and resolve analyzer 7→8 toolchain split#612
AndreaDiazCorreia wants to merge 2 commits into
mainfrom
chore/align-ci-flutter-analyzer-611

Conversation

@AndreaDiazCorreia

@AndreaDiazCorreia AndreaDiazCorreia commented Jun 11, 2026

Copy link
Copy Markdown
Member

Closes #611
Closes #606

What

Aligns the whole toolchain on the analyzer-8 side of the Flutter 3.41→3.44 boundary so local code generation works on current Flutter stable, matching CI.

Changes

  • CI / toolchain: bump Flutter to 3.44.1 in all workflows (main, release, flutter, desktop) and .fvmrc.
  • Dependencies: regenerate pubspec.lock on analyzer 8 — source_gen 3.1.0 → 4.2.3 (drops the removed DartObjectImpl.getInvocation() call that broke build_runner, fixes Dart run build_runner build fails on Flutter 3.44.0, source_gen 3.1.0 incompatible with analyzer 8.x #606). No pubspec.yaml constraint changes for this.
  • lucide_icons: migrate lucide_icons ^0.257.0 (abandoned, breaks on the now final IconData) to the maintained fork lucide_icons_flutter ^3.1.14; update imports in 17 files (all 42 icons map 1:1).
  • Deprecation: replace deprecated cacheExtent with scrollCacheExtent: ScrollCacheExtent.pixels(...) in chat_messages_list.
  • Android: bump Gradle 8.9 → 8.14.3, AGP 8.6.0 → 8.11.1, Kotlin 2.1.0 → 2.2.20, and migrate the app to Built-in Kotlin.

Validation

  • flutter analyze — 0 issues
  • flutter test — 449 passing
  • dart run build_runner build -d — OK
  • flutter build web and flutter build apk --debug — OK

Notes

  • Does not include the Riverpod 3.x migration (Migrate from Riverpod 2.x to Riverpod 3.x #512) — no Riverpod codegen is used here, so it is not required to bump Flutter.
  • A residual "plugins apply KGP" warning remains for file_picker, mobile_scanner, share_plus, shared_preferences_android; it is upstream (plugin-side) and non-blocking.

Summary by CodeRabbit

Release Notes

  • Chores

    • Updated Flutter SDK to version 3.44.1 across all build environments
    • Upgraded Android build tools and Gradle configuration
    • Migrated icon library for improved compatibility and performance
  • Improvements

    • Optimized chat message list scroll caching for smoother performance

- Bump Flutter version from 3.35.7 to 3.44.1 across .fvmrc and all GitHub workflow files
- Upgrade Gradle wrapper from 8.9 to 8.14.3
- Upgrade Android Gradle Plugin from 8.6.0 to 8.11.1
- Upgrade Kotlin from 2.1.0 to 2.2.20
- Add Android build flags (builtInKotlin=false, newDsl=false) to gradle.properties
- Replace deprecated lucide_icons package with lucide_icons_flutter (0.257.0 → 3.1.14)
- Replace deprecated cacheExtent with scrollCache
chore: migrate to Flutter's built-in Kotlin support and update Kotlin configuration

- Remove explicit kotlin-android plugin from app/build.gradle (now provided by Flutter)
- Move kotlinOptions from android block to top-level kotlin.compilerOptions block
- Update jvmTarget syntax to use org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11
- Update comment to clarify KGP is declared in settings.gradle with apply false
```
@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2a0429ea-e698-41ca-a455-af8378e25e21

📥 Commits

Reviewing files that changed from the base of the PR and between fbad36c and 6eae3e4.

⛔ Files ignored due to path filters (1)
  • pubspec.lock is excluded by !**/*.lock
📒 Files selected for processing (28)
  • .fvmrc
  • .github/workflows/desktop.yml
  • .github/workflows/flutter.yml
  • .github/workflows/main.yml
  • .github/workflows/release.yml
  • android/app/build.gradle
  • android/gradle.properties
  • android/gradle/wrapper/gradle-wrapper.properties
  • android/settings.gradle
  • lib/features/chat/widgets/chat_messages_list.dart
  • lib/features/key_manager/key_management_screen.dart
  • lib/features/settings/about_screen.dart
  • lib/features/settings/notification_settings_screen.dart
  • lib/features/settings/settings_screen.dart
  • lib/features/trades/widgets/status_filter_widget.dart
  • lib/features/wallet/screens/connect_wallet_screen.dart
  • lib/features/wallet/screens/wallet_settings_screen.dart
  • lib/features/wallet/widgets/wallet_balance_widget.dart
  • lib/features/wallet/widgets/wallet_status_card.dart
  • lib/shared/widgets/bottom_nav_bar.dart
  • lib/shared/widgets/custom_drawer_overlay.dart
  • lib/shared/widgets/ln_address_confirmation_widget.dart
  • lib/shared/widgets/nwc_connection_status_indicator.dart
  • lib/shared/widgets/nwc_invoice_widget.dart
  • lib/shared/widgets/nwc_notification_listener.dart
  • lib/shared/widgets/nwc_payment_receipt_widget.dart
  • lib/shared/widgets/nwc_payment_widget.dart
  • pubspec.yaml

Walkthrough

Flutter toolchain, Android Gradle infrastructure, and icon dependencies are upgraded to resolve analyzer 7→8 compatibility. CI version moves to 3.44.1; Gradle wrapper, plugin versions, and Kotlin configuration modernized; lucide_icons package swapped for lucide_icons_flutter; ListView caching API updated.

Changes

Flutter 3.44 upgrade and dependency migration

Layer / File(s) Summary
Flutter version alignment across CI and local config
.fvmrc, .github/workflows/desktop.yml, .github/workflows/flutter.yml, .github/workflows/main.yml, .github/workflows/release.yml
All CI workflows and the local .fvmrc configuration bumped from 3.32.2–3.35.7 to 3.44.1, ensuring a uniform Flutter version across development, CI, and release pipelines.
Android Gradle system modernization
android/gradle/wrapper/gradle-wrapper.properties, android/settings.gradle, android/gradle.properties, android/app/build.gradle
Gradle wrapper updated from 8.9 to 8.14.3; com.android.application and org.jetbrains.kotlin.android plugin versions updated; explicit Kotlin JVM target configuration moved from android.kotlinOptions to top-level kotlin.compilerOptions block using JVM_11; Flutter migrator properties android.builtInKotlin=false and android.newDsl=false added.
Icon package dependency migration
pubspec.yaml, lib/features/key_manager/key_management_screen.dart, lib/features/settings/about_screen.dart, lib/features/settings/notification_settings_screen.dart, lib/features/settings/settings_screen.dart, lib/features/trades/widgets/status_filter_widget.dart, lib/features/wallet/screens/connect_wallet_screen.dart, lib/features/wallet/screens/wallet_settings_screen.dart, lib/features/wallet/widgets/wallet_balance_widget.dart, lib/features/wallet/widgets/wallet_status_card.dart, lib/shared/widgets/bottom_nav_bar.dart, lib/shared/widgets/custom_drawer_overlay.dart, lib/shared/widgets/ln_address_confirmation_widget.dart, lib/shared/widgets/nwc_connection_status_indicator.dart, lib/shared/widgets/nwc_invoice_widget.dart, lib/shared/widgets/nwc_notification_listener.dart, lib/shared/widgets/nwc_payment_receipt_widget.dart, lib/shared/widgets/nwc_payment_widget.dart
Icon dependency changed from lucide_icons: ^0.257.0 to lucide_icons_flutter: ^3.1.14 in pubspec.yaml; all 17 widget files updated to import LucideIcons from package:lucide_icons_flutter/lucide_icons.dart instead of package:lucide_icons/lucide_icons.dart.
Flutter widget API update for scroll caching
lib/features/chat/widgets/chat_messages_list.dart
ListView.builder caching mechanism updated from deprecated cacheExtent: 1000 to new Flutter 3.44 API scrollCacheExtent: ScrollCacheExtent.pixels(1000); package:flutter/rendering.dart import added to support ScrollCacheExtent type.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • MostroP2P/mobile#376: Introduced .fvmrc with Flutter 3.35.7, which is now being upgraded to 3.44.1 in this PR.
  • MostroP2P/mobile#408: Implements NotificationSettingsScreen with lucide_icons imports, now updated to use lucide_icons_flutter in this migration.

Suggested reviewers

  • BraCR10
  • grunch

🐰 A rabbit hops through changes with glee,
Flutter leaps from thirty-two to forty-four-point-three!
Icons dance in lucide-icons-flutter's new light,
While Gradle builds stronger, configured just right.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main changes: aligning CI Flutter to 3.44.1 and resolving the analyzer 7→8 toolchain split, which matches the substantial refactoring in the changeset.
Linked Issues check ✅ Passed All objectives from #611 and #606 are met: Flutter bumped to 3.44.1 in CI and .fvmrc, pubspec.lock regenerated (source_gen upgraded 3.1.0→4.2.3 per requirements), Android toolchain updated, deprecated APIs replaced (cacheExtent→scrollCacheExtent, lucide_icons→lucide_icons_flutter), and validation confirmed (flutter analyze/test/build_runner pass).
Out of Scope Changes check ✅ Passed All changes are directly aligned with stated objectives: Flutter/toolchain version bumps, dependency updates (source_gen, Android plugins, Gradle), deprecation fixes (cacheExtent, lucide_icons), and import updates in 17 files are all explicitly required to resolve #611/#606 and validate the new toolchain.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/align-ci-flutter-analyzer-611

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6eae3e4a35

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread android/settings.gradle

@ermeme ermeme Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Reviewed on the current head SHA 6eae3e4a35. CI is green, and I didn't find any blocking issues. LGTM.

@codaMW

codaMW commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

Tested this on my machine since I'm one of the people who hit the original build_runner failure on 3.44. Confirming it resolves it.

Environment: Flutter 3.44.0 stable (Dart 3.12.0) on Ubuntu/WSL2 note slightly behind the PR's pinned 3.44.1.

Results:

One caveat, not caused by this PR: flutter analyze reports 1 error in integration_test/test_helpers.dart (a FlutterSecureStorage fake missing the getListeners getter). That file isn't touched by #612, and the error is a flutter_secure_storage API/version-skew thing likely because I'm on 3.44.0 with a pub get that resolved a slightly different secure_storage than the pinned lock on 3.44.1. Worth a quick check on exact-3.44.1 to confirm it stays at the 0 issues you reported, but it's unrelated to the toolchain change here.

LGTM from a 'does it build and run' standpoint.

@codaMW codaMW 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.

tACK 6eae3e4 on build + run (Flutter 3.44.0). build_runner and apk --debug both succeed; resolves the #606 failure on my machine.

@codaMW codaMW 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.

tACK

@mostronatorcoder mostronatorcoder Bot 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.

I reviewed the current head and I do see one real blocking issue before merge.

Blocking issue:

  • The toolchain floor appears to have moved in the lockfile (pubspec.lock now records dart: ">=3.10.0-0 <4.0.0"), but I do not see the project constraints updated coherently in pubspec.yaml.
  • As-is, this can leave the repo in an inconsistent state where the resolved dependency set requires a newer Dart/Flutter toolchain than the project manifest clearly declares.
  • CI may pass because it is pinned to the newer toolchain, but contributors and local environments rely on the manifest constraints to know what is actually supported.

Why I think this is a blocker:

  • This PR is explicitly about aligning toolchains. If the lockfile and the declared project constraints diverge, the alignment is incomplete and can fail reproducibility outside CI.
  • A dependency resolution that only works because CI is newer than the manifest says is exactly the kind of split this PR is supposed to eliminate.

What I would want:

  • Make the SDK/toolchain declaration consistent in the project manifests with the actually required floor for this dependency set.
  • In other words, if Dart 3.10 / Flutter 3.44.1 is now required, declare that clearly in the manifest layer, not only indirectly through the generated lockfile.

Aside from that consistency issue, the general direction of aligning the Flutter/Gradle/Kotlin stack makes sense.

@Catrya

Catrya commented Jun 19, 2026

Copy link
Copy Markdown
Member

@AndreaDiazCorreia Can you check what Mostronator said? It's already been merged the Riverpod PR #613 , which depended on this PR, to merge this ASAP.

@grunch grunch closed this Jun 24, 2026
@grunch grunch deleted the chore/align-ci-flutter-analyzer-611 branch June 24, 2026 18:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

4 participants