audit-ui-thread-safety

Prévenez les blocages de l'interface et garantissez une expérience utilisateur réactive en validant les règles de threading et en migrant les appels bloquants hors du thread de dispatch des événements (EDT).

npx skills add https://github.com/flutter/flutter-intellij --skill audit-ui-thread-safety

Skill: UI Thread Safety & Responsiveness

You are tasked with preventing UI freezes and ensuring a responsive user experience by validating threading rules.

Objective

Prevent UI freezes and ensure a responsive user experience by validating threading rules.

Workflow Instructions

1. Baseline

  • Run ./gradlew test and ./gradlew verifyPlugin to ensure the project is in a good state before refactoring.

2. Audit EDT Usage

  • Search for usages of runInEdt, invokeLater, and invokeAndWait.

3. Identify Blocking Calls

  • Ensure no I/O operations (file access, network calls) or heavy computations occur within these UI blocks.

4. Migrate to Background

  • Refactor heavy tasks to run on background threads using Task.Backgroundable or ReadAction.nonBlocking.

5. Check Modality

  • Verify that modal dialogs do not block the UI thread unnecessarily.

6. Verify

  • Run ./gradlew testClasses to ensure safe refactoring.
  • Run ./gradlew test and ./gradlew verifyPlugin to ensure no regressions.
  • Run the plugin in a sandbox (./gradlew runIde) and perform key actions while monitoring for UI freezes.
  • Suggest manual test steps: Check the code changes made and write test steps for a user to execute that will trigger the code paths that have changed. If needed, add logging statements to verify that the code paths have successfully run.

7. Report & Review

  • Summarize the threading fixes.
  • Test Location: Explicitly state where in the IDE the user should go to test the changed functionality (e.g., "Go to Preferences > Languages & Frameworks > Flutter").
  • Action: Ask the user to review the changes closely to ensure no deadlocks or UI freezes are introduced.
  • Do not commit or push.
  • Provide a suggested Git commit message (e.g., "Fix UI freeze: Move heavy computation to background task").

Plus de skills de flutter

dart-modern-features
flutter
Pour trouver des candidats à la modernisation :
flutter-fix-layout-issues
flutter
Corrige les erreurs de mise en page Flutter (débordements, contraintes illimitées) à l'aide des outils Dart et Flutter MCP. À utiliser pour résoudre les messages « RenderFlex overflowed », « Vertical…
adding-release-notes
flutter
Ajoute des descriptions de changements destinés aux utilisateurs dans les notes de version de DevTools. À utiliser pour documenter les améliorations, correctifs ou nouvelles fonctionnalités dans le fichier NEXT_RELEASE_NOTES.md.
reviewing-devtools-prs
flutter
Workflow de revue de PR spécifique au dépôt DevTools, appliquant les directives de style DevTools et les modèles de revue courants. À utiliser lors de la revue de pull requests dans le…
dart-use-primary-constructors
flutter
Aider les utilisateurs à écrire des constructeurs principaux syntaxiquement et sémantiquement corrects en Dart, et migrer/utiliser la nouvelle syntaxe de constructeur, la syntaxe de point-virgule à corps vide,…
code-documentation
flutter
Guide pour rédiger une documentation de code efficace, incluant les docstrings, JSDoc, dartdoc et les commentaires d'implémentation. Utilisez cette compétence lors de l'écriture de nouveau code, de l'ajout…
api-review
flutter
Examine le code spécifié par rapport aux directives canoniques de conception d'API. Utilisez cette compétence lorsque l'utilisateur demande une revue d'API ou souhaite vérifier que le code respecte la conception d'API…
flutter-accessibility
flutter
Implémente les normes d'accessibilité WCAG 2 et EN 301 549 ainsi que les mises en page adaptatives dans les applications Flutter. Applique les annotations sémantiques, les tailles de cible tactile (48x48 dp minimum) et les ratios de contraste de texte (4,5:1 pour le petit texte, 3:1 pour le grand texte) sur les plateformes mobiles, web et de bureau. Fournit une logique décisionnelle pour l'initialisation de la sémantique web, l'encapsulation de widgets interactifs, le changement de mise en page basé sur la taille d'écran et la gestion des entrées clavier/souris. Inclut la gestion du parcours de focus via FocusTraversalGroup et...