dart-flutter-sdk-upgrade

Par verygoodopensource · vgv-ai-flutter-plugin

Référence spécifique à VGV pour la mise à jour des contraintes de SDK Dart et Flutter dans les packages. Couvre les contraintes d'environnement dans `pubspec.yaml`, les versions Flutter dans les workflows CI, et la préparation des PR de mise à jour SDK. Le CI utilise `^MAJOR.MINOR.x` pour résoudre vers le dernier patch ; `pubspec` épingle la version de patch exacte (ex. : `^3.50.1`).

npx skills add https://github.com/verygoodopensource/vgv-ai-flutter-plugin --skill dart-flutter-sdk-upgrade

Mise à niveau du SDK VGV Flutter/Dart — Référence Rapide

Un PR par projet. Uniquement les changements du workflow CI et de pubspec.yaml — pas de logique, pas de mises à jour de version de dépendances, pas de changements de tests.


Standards Fondamentaux

Appliquez ces standards à TOUS les travaux de mise à niveau du SDK :

  • Les versions Flutter et Dart diffèrent — toujours chercher la version Dart fournie avec la release Flutter cible sur https://docs.flutter.dev/install/archive
  • Flutter CI utilise MAJOR.MINOR.x — pas de caret, le wildcard .x résout vers le dernier patch
  • Dart CI utilise le patch exactMAJOR.MINOR.PATCH, pas de caret, pas de wildcard
  • pubspec verrouille le patch exact — utilisez ^MAJOR.MINOR.PATCH avec la version de patch spécifique
  • Paquets Dart pur — utilisez directement la version Dart, pas de mappage Flutter nécessaire
  • Vérifiez avec pub get et analyze — ne résolvez pas silencieusement les conflits

0. Résoudre la version cible

Flutter fournit une version Dart spécifique — leurs numéros de version ne correspondent pas. Par exemple, Flutter 3.41.0 est livré avec Dart 3.11.0. Vous devez chercher la version Dart correcte pour la release Flutter cible avant de modifier des fichiers.

Comment trouver la version Dart :

  1. Ouvrez https://docs.flutter.dev/install/archive
  2. Trouvez la release stable Flutter cible
  3. Notez la version Dart listée à côté

Si l'utilisateur n'a pas spécifié de version Flutter, cherchez la dernière release stable Flutter sur cette même page. Pour les paquets Dart pur (sans dépendance Flutter), la version Dart est celle que l'utilisateur spécifie ou la dernière stable — pas de mappage Flutter nécessaire.

Confirmez les deux versions résolues avec l'utilisateur avant de modifier les fichiers.


1. Workflows CI — .github/workflows/

Les paquets VGV utilisent des workflows réutilisables VeryGoodOpenSource/very_good_workflows. Laissez le tag @v1 intact. Les paquets Flutter utilisent MAJOR.MINOR.x — pas de caret, littéralement x comme wildcard de patch afin que CI résolve automatiquement vers le dernier patch. Les paquets Dart verrouillent la version de patch exacte. Lors de la mise à jour des versions, mettez à jour MAJOR et/ou MINOR selon le besoin (par ex., 3.41.x3.42.x ou 4.0.x) :

Paquet Flutter :

uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1
with:
  flutter_version: "3.41.x" # ← MAJOR.MINOR.x, résout vers le dernier patch

Paquet Dart pur — notez que la clé est dart_sdk, pas flutter_version. Utilisez la version Dart, pas la version Flutter :

uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/dart_package.yml@v1
with:
  dart_sdk: "3.11.0" # ← version Dart exacte (pas la version Flutter)

Si un fichier utilise flutter_channel: stable à la place d'une version verrouillée, verrouillez la version — VGV verrouille toujours les versions Flutter dans les workflows CI.


2. Contraintes d'environnement pubspec.yaml

Le format est ^MAJOR.MINOR.PATCH (caret, patch exact). Contrairement à CI, pubspec verrouille une version de patch spécifique — celle que l'utilisateur spécifie ou la version stable actuelle au moment de la mise à jour.

Paquet Flutter (a flutter: sous dependencies) :

environment:
  sdk: ^3.11.0 # ← Version Dart fournie avec la release Flutter cible
  flutter: ^3.41.0 # ← Version Flutter

Paquet Dart pur (pas de dépendance SDK Flutter) :

environment:
  sdk: ^3.11.0 # ← Version Dart uniquement
  # pas de ligne flutter:

Dans un monorepo, mettez à jour le pubspec.yaml de chaque paquet individuellement. Le workflow CI partagé ne nécessite une mise à jour qu'une seule fois.


3. Vérifier

Exécutez depuis le répertoire de chaque paquet. Utilisez les outils Dart/Flutter MCP s'ils sont disponibles ; sinon, Bash.

flutter pub get   # ou : dart pub get  (pour les paquets Dart pur)
flutter analyze   # ou : dart analyze

Si pub get échoue avec des conflits de dépendances, signalez-les — ne les résolvez pas silencieusement en mettant à niveau les paquets. Si analyze révèle de nouvelles erreurs introduites par la mise à niveau du SDK, signalez-les plutôt que de les corriger dans ce PR.


4. Vérification de la portée du PR

Avant de commiter, confirmez que le diff contient uniquement :

  • .github/workflows/*.yml
  • pubspec.yaml (un ou plusieurs)
git diff HEAD --name-only

Message de commit/PR suggéré :

chore: bump Flutter to 3.41.0 / Dart to 3.11.0

- Update flutter_version in .github/workflows/ to 3.41.x (CI resolves latest patch)
- Update dart_sdk in .github/workflows/ to 3.11.0 (exact patch)
- Update environment sdk/flutter constraints in pubspec.yaml

No logic or code changes.

Skills similaires