Skip to content

Conversation

@untreu2
Copy link
Contributor

@untreu2 untreu2 commented Oct 22, 2025

Description

The layout has been adjusted and the necessary spacing has been added. The issue of buttons overlapping and key packages not being visible has been fixed.
Image

Type of Change

  • ✨ New feature (non-breaking change which adds functionality)
  • 🛠️ Bug fix (non-breaking change which fixes an issue)
  • ❌ Breaking change (fix or feature that would cause existing functionality to change)
  • 🧹 Code refactor
  • ✅ Build configuration change
  • 📝 Documentation
  • 🗑️ Chore
  • 🧪 Tests

Checklist

  • Run just precommit to ensure that formatting and linting are correct
  • Run just check-flutter-coverage to ensure that flutter coverage rules are passing
  • Updated the CHANGELOG.md file with your changes (if they affect the user experience)

Fixes #747

Summary by CodeRabbit

Release Notes

  • Refactor

    • Adjusted the Developer Settings screen layout to improve scrolling behavior and rendering performance.
  • New Features

    • Added localized labels for "Background Services" and "Background Sync Service" across supported languages.
  • Style

    • Minor visual/styling refinements to key package items and empty-state presentation.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 22, 2025

Walkthrough

Replaced a scrollable Expanded-wrapped key-packages ListView with a non-scrollable, shrink-wrapped ListView.separated inside a RepaintBoundary, adjusted minor layout/commenting in key-package item widget, and added localized strings for "Background Services" and "Background Sync Service" across locales.

Changes

Cohort / File(s) Summary
Developer settings UI
lib/ui/settings/developer/developer_settings_screen.dart
Replaced Expanded scrollable list with a non-scrollable, shrink-wrapped ListView.separated inside a RepaintBoundary; adjusted surrounding layout and removed/updated inline comments in _KeyPackageItem (no public API changes).
Locale additions
lib/locales/en.json, lib/locales/de.json, lib/locales/es.json, lib/locales/fr.json, lib/locales/it.json, lib/locales/pt.json, lib/locales/ru.json, lib/locales/tr.json
Added settings.backgroundServices and settings.backgroundSyncService translation keys to multiple locale files and updated trailing commas where needed.

Sequence Diagram(s)

sequenceDiagram
    participant Screen as DeveloperSettingsScreen
    participant Parent as ParentScrollView
    participant List as ListView.separated
    Note over Screen,Parent: Previous flow used Expanded->scrollable ListView
    Screen->>Parent: layout and scrolling responsibility
    Parent->>List: hosts non-scrollable, shrink-wrapped list
    Note right of List: RepaintBoundary wraps list (reduces overlap/raster issues)
    List-->>Screen: item build / separators (no internal scroll)
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Suggested reviewers

  • erskingardner
  • josefinalliende
  • Quwaysim

Poem

🐇 I nudged the list to sit just right,

No floating text to spoil the sight.
Repainted calm, the items stay,
Background sync now minds its way.
A tiny hop — the UI's bright! ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Out of Scope Changes Check ⚠️ Warning This PR introduces localization key additions for backgroundServices and backgroundSyncService across multiple locale files, which are unrelated to the layout-overlap bug defined in issue #747 and therefore represent out-of-scope modifications. The localization changes should be extracted into a separate PR or clearly justified as necessary for the overlap fix so that this bug-fix PR remains focused solely on resolving issue #747.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title concisely highlights the primary change of fixing the developer settings screen layout and directly reflects the bug being resolved without extraneous detail.
Linked Issues Check ✅ Passed The replacement of the Expanded-wrapped ListView with a shrink-wrapped ListView.separated inside a RepaintBoundary ensures the key package list updates layout immediately and prevents the background sync section from overlapping the package text, directly satisfying the fix described in issue #747.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix-dev-screen

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0e37710 and e5530ee.

⛔ Files ignored due to path filters (1)
  • ios/Podfile.lock is excluded by !**/*.lock
📒 Files selected for processing (9)
  • lib/locales/de.json (1 hunks)
  • lib/locales/en.json (1 hunks)
  • lib/locales/es.json (1 hunks)
  • lib/locales/fr.json (1 hunks)
  • lib/locales/it.json (1 hunks)
  • lib/locales/pt.json (1 hunks)
  • lib/locales/ru.json (1 hunks)
  • lib/locales/tr.json (1 hunks)
  • lib/ui/settings/developer/developer_settings_screen.dart (4 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • lib/ui/settings/developer/developer_settings_screen.dart
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Flutter CI

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.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b0d51ef and 0e37710.

📒 Files selected for processing (1)
  • lib/ui/settings/developer/developer_settings_screen.dart (2 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.dart

📄 CodeRabbit inference engine (.cursor/rules/flutter.mdc)

**/*.dart: Always declare the type of each variable and function (parameters and return value)
Avoid using dynamic and Object without justification
Create necessary types instead of overusing primitives or dynamic
One export per file
Use PascalCase for classes
Use camelCase for variables, functions, and methods
Avoid magic numbers and define constants
Start each function name with a verb
Use verbs for boolean variables (e.g., isLoading, hasError, canDelete)
Write short functions with a single purpose (under ~20 instructions)
Name functions with a verb plus context; for booleans use isX/hasX/canX; for void use executeX/saveX
Avoid deep nesting via early returns and extraction to utility functions
Use higher-order functions (map, where/filter, reduce) to avoid nesting
Use arrow functions for simple functions (under ~3 statements); use named functions otherwise
Use default parameter values instead of null checks
Reduce function parameters using RO-RO: pass/return parameter objects with declared types
Maintain a single level of abstraction within functions
Encapsulate data in composite types; avoid overusing primitives
Prefer validating data within classes rather than in functions
Prefer immutability; use final for runtime constants and const for compile-time constants
Use const constructors and const literals where possible
Follow SOLID principles
Prefer composition over inheritance
Declare interfaces (abstract classes) to define contracts
Write small classes with a single purpose (under ~200 instructions, <10 public methods, <10 properties)
Use exceptions for unexpected errors
Only catch exceptions to fix expected problems or add context; otherwise use a global handler

Files:

  • lib/ui/settings/developer/developer_settings_screen.dart
lib/**/*.dart

📄 CodeRabbit inference engine (.cursor/rules/flutter.mdc)

lib/**/*.dart: Use flutter_rust_bridge to access core app functionality
Use Riverpod for state management; prefer StreamProviders for Rust API streams; use keepAlive if needed
Use freezed to model/manage UI states
Controllers should expose methods as inputs and update UI state that drives the UI
Use AutoRoute for navigation and use extras to pass data between pages
Use Dart extensions to manage reusable code
Use ThemeData to manage themes
Use AppLocalizations for translations
Use constants to manage constant values
Avoid deeply nested widget trees; aim for a flatter widget structure for performance and readability
Break down large widgets into smaller, focused, reusable components
Keep the widget tree shallow to simplify state management and data flow
Utilize const constructors and const widgets wherever possible to reduce rebuilds

Files:

  • lib/ui/settings/developer/developer_settings_screen.dart
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Flutter CI

Copy link
Contributor

@josefinalliende josefinalliende left a comment

Choose a reason for hiding this comment

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

✅ Tried it locally and LGTM! Thanks for fixing it! 🫶

@untreu2 untreu2 merged commit a7b7ce2 into master Oct 22, 2025
2 checks passed
@untreu2 untreu2 deleted the fix-dev-screen branch November 5, 2025 18:29
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.

Background sync text over key package text in developer settings

3 participants