Communitygithub.com

flutter/flutter-handling-concurrency

Exécute des tâches de longue durée dans des isolates en arrière-plan pour garder l'interface utilisateur réactive. À utiliser lors de calculs lourds ou d'analyse de grands ensembles de données.

Qu'est-ce que flutter-handling-concurrency ?

Cette compétence pour agents IA spécialisée dans Flutter permet de gérer la concurrence en déléguant les tâches longues et intensives (calculs complexes, analyse de grands ensembles de données, traitement d'images, etc.) à des isolates en arrière-plan. Cela garantit que l'interface utilisateur reste fluide et réactive, sans blocage. La compétence repose sur les mécanismes natifs de Flutter et Dart, en particulier l'API `Isolate` ou `compute`, et peut être utilisée avec des outils comme Claude Code, Cursor ou Codex. Elle fournit des instructions claires sur la création d'isolates, la communication via des ports de réception, et la gestion des erreurs. Le fichier SKILL.md inclus guide l'agent pas à pas, depuis la création d'une fonction de calcul jusqu'à son exécution dans un isolate, avec des exemples concrets adaptés à Flutter. Cette approche est essentielle pour toute application mobile ou web nécessitant des performances optimales.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/flutter/skills/tree/main/skills/flutter-handling-concurrency

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait flutter-handling-concurrency ?

Exécute des tâches de longue durée dans des isolates en arrière-plan pour garder l'interface utilisateur réactive. À utiliser lors de calculs lourds ou d'analyse de grands ensembles de données.

Présentation

Cette compétence permet à un agent IA (comme Claude Code, Cursor ou Codex) de gérer efficacement la concurrence dans des applications Flutter en déléguant les opérations coûteuses à des isolates séparés. Elle assure que le thread principal de l'interface utilisateur ne soit jamais bloqué, garantissant ainsi une expérience fluide.

Utilisation

  • Quand l'utiliser : Lorsque votre application doit effectuer des calculs complexes, analyser de gros fichiers JSON, traiter des images ou toute autre tâche intensive qui pourrait ralentir l'interface.
  • Comment ça fonctionne : La compétence exploite l'API Isolate de Dart ou la fonction utilitaire compute de Flutter pour exécuter le code dans un espace mémoire distinct.

Exemple de code

import 'dart:isolate';
import 'package:flutter/foundation.dart';

// Fonction à exécuter dans l'isolate
int calculLourd(int valeur) {
  // Simulation d'un calcul long
  int resultat = 0;
  for (int i = 0; i < valeur; i++) {
    resultat += i;
  }
  return resultat;
}

// Appel depuis le widget
void lancerCalcul() async {
  final int resultat = await compute(calculLourd, 100000000);
  print('Résultat : $resultat');
}

Communication entre isolates

Pour échanger des données entre l'isolate principal et l'isolate de travail, utilisez des SendPort et ReceivePort. L'agent IA peut générer le code nécessaire à cette communication.

Considérations importantes

  • Les isolates ne partagent pas la mémoire ; les données doivent être copiées.
  • Les objets passés à un isolate doivent être sérialisables (types primitifs, listes, maps, etc.).
  • Le coût de création d'un isolate peut être élevé pour des tâches très courtes ; réservez-les aux opérations lourdes.

Support des plateformes

  • Fonctionne sur Android, iOS, Web, macOS, Windows et Linux.
  • Pour le Web, l'utilisation d'isolates peut nécessiter des ajustements (support des workers).

Erreurs courantes

ErreurCauseSolution
Unhandled exception: Invalid argument(s)Objet non sérialisable passé à l'isolateVérifiez que les données sont des types primitifs ou des conteneurs simples
IsolateSpawnExceptionÉchec de la création de l'isolateAssurez-vous que la fonction cible est une fonction de niveau supérieur ou une méthode statique

Conclusion

En utilisant flutter/flutter-handling-concurrency, l'agent IA peut rendre vos applications Flutter plus performantes et réactives, même lors de traitements intensifs. Suivez les exemples et les conseils ci-dessus pour une implémentation robuste.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

flutter/flutter-accessibility

Configure your Flutter app to support assistive technologies like Screen Readers

flutter/flutter-accessibility-audit

Triggers an accessibility scan through the widget_inspector and automatically adds Semantics widgets or missing labels to the source code.

flutter/flutter-adding-home-screen-widgets

Adds home screen widgets to a Flutter app for Android and iOS. Use when providing glanceable app information or quick actions on the device home screen.

flutter/flutter-add-integration-test

Configures Flutter Driver for app interaction and converts MCP actions into permanent integration tests. Use when adding integration testing to a project, exploring UI components via MCP, or automating user flows with the integration_test package.

flutter/flutter-add-widget-preview

Adds interactive widget previews to the project using the previews.dart system. Use when creating new UI components or updating existing screens to ensure consistent design and interactive testing.

flutter/flutter-add-widget-test

Implement a component-level test using `WidgetTester` to verify UI rendering and user interactions (tapping, scrolling, entering text). Use when validating that a specific widget displays correct data and responds to events as expected.

flutter/flutter-animating-apps

Implements animated effects, transitions, and motion in a Flutter app. Use when adding visual feedback, shared element transitions, or physics-based animations.

flutter/flutter-animation

Add animated effects to your Flutter app

flutter/flutter-apply-architecture-best-practices

Architects a Flutter application using the recommended layered approach (UI, Logic, Data). Use when structuring a new project or refactoring for scalability.

flutter/flutter-app-size

Measure and reduce the size of the Flutter app bundle, APK, or IPA

flutter/flutter-architecting-apps

Architects a Flutter application using the recommended layered approach (UI, Logic, Data). Use when structuring a new project or refactoring for scalability.

flutter/flutter-architecture

Use the Flutter team's recommended app architecture

flutter/flutter-building-forms

Builds Flutter forms with validation and user input handling. Use when creating login screens, data entry forms, or any multi-field user input.

flutter/flutter-building-layouts

Builds Flutter layouts using the constraint system and layout widgets. Use when creating or refining the UI structure of a Flutter application.

flutter/flutter-building-plugins

Builds Flutter plugins that provide native interop for other apps to use. Use when creating reusable packages that bridge Flutter with platform-specific functionality.

flutter/flutter-build-responsive-layout

Use `LayoutBuilder`, `MediaQuery`, or `Expanded/Flexible` to create a layout that adapts to different screen sizes. Use when you need the UI to look good on both mobile and tablet/desktop form factors.

flutter/flutter-caching

Cache data in a Flutter app

flutter/flutter-caching-data

Implements caching strategies for Flutter apps to improve performance and offline support. Use when retaining app data locally to reduce network requests or speed up startup.

flutter/flutter-concurrency

Execute long-running tasks in a background thread in Flutter

flutter/flutter-databases

Work with databases in a Flutter app

Skills associés