26
votes

Comment puis-je activer les expériences de langage Flutter / Dart?

Je souhaite utiliser la nouvelle syntaxe de diffusion dans Dart.

J'utilise Android Studio pour le développement Flutter et je reçois cette erreur.

Cela nécessite l'activation de l'expérience --spread-collections

flutter --version
Flutter 1.3.8 • channel beta • https://github.com/flutter/flutter.git
Framework • revision e5b1ed7a7f (4 weeks ago) • 2019-03-06 14:23:37 -0800
Engine • revision f4951df193
Tools • Dart 2.2.1 (build 2.2.1-dev.0.0 571ea80e11)

Cependant, je n'ai trouvé nulle part où je pourrais spécifier cette option.

Je ne pouvais même pas le faire fonctionner sur la ligne de commande. flutter --spread-collections run donne Could not find an option named "spread-collections". .

ListView(children: [...listTiles, MyWidget()])


3 commentaires

Vous devez être sur la branche principale


Les fonctionnalités expérimentales sont uniquement sur master branche. Par défaut, vous êtes sur stable branche stable . Vous pouvez voir les canaux en utilisant le flutter channel . Lisez github.com/flutter/flutter/wiki/Flutter-build-release-channe‌ ls pour plus d'informations.


si vous ne pouvez toujours pas le faire fonctionner, cela a fonctionné pour moi: stackoverflow.com/questions/59458433/...


8 Réponses :


18
votes

Vous devez créer un fichier analysis_options.yaml à la racine de votre application Flutter et écrire quelque chose comme

flutter version v1.2.1

Assurez-vous également de basculer sur le bon canal où la nouvelle fonctionnalité est incluse, par exemple (dev, beta ou master)

flutter upgrade

Et assurez-vous également d'avoir une version assez récente de Flutter

flutter channel dev

Vous pouvez spécifier le numéro de version du flutter pour vous assurer d'avoir une version très spécifique

analyzer:
  enable-experiment:
    - spread-collections


0 commentaires

4
votes

Vous utilisez une ancienne version de Flutter

La diffusion est disponible à partir de flutter 1.5 et dart 2.3

Courir:

flutter upgrade


2 commentaires

Merci, veuillez noter que j'ai posé cette question en avril, où Dart 2.3 n'était pas encore disponible pour Flutter sur aucun canal.


dépend également du canal de scintillement dans lequel vous vous trouvez



18
votes

Dans mon cas, j'ai suivi ces deux étapes et cela a fonctionné pour moi.

  1. lancez " Flutter Upgrade "

  2. changer le sdk dans l'environnement dans pubspec.yaml

    environment:
      sdk: ">=2.6.0 <3.0.0"
    


2 commentaires

n’avez-vous pas besoin de changer d’abord le SDK, puis d’appeler «mise à niveau de flutter»


Quoi qu'il en soit, vous devez vous rappeler de redémarrer l'IDE



3
votes

Voici une solution que vous pouvez essayer:

1) Conservez le analysis_options.yaml dans votre dossier racine avec ce code:

environment:
  sdk: ">=2.5.2 <3.0.0"

2) N'utilisez pas de crochets {} entre vos boucles for Ex:

<Widget>[
  for (final category in categories) 
    CategoryWidget(category: category)
],

3) Étape importante qui est probablement la raison pour laquelle cela ne fonctionne pas pour vous: modifiez la contrainte de version de Dart dans le fichier pubspec.yml de votre dossier racine en 2.5.2 ou supérieur.

analyzer:
  enable-experiment:
    - control-flow-collections


0 commentaires

2
votes

La réponse actuelle qui fonctionne dans le dernier Flutter 1.17.1 ou Dart 2.8.2

Créez un analysis_options.yaml dans le répertoire du fichier pubspec.yaml

Écrivez ce code dans le fichier:

include: package:pedantic/analysis_options.1.8.0.yaml 

linter:
  rules:
    - prefer_spread_collections

Pour plus d'informations, consultez cette documentation


2 commentaires

Je l'ai essayé. Mais j'obtiens une erreur "include: package: pedantic / analysis_options.1.8.0.yaml" Le fichier est introuvable.


@ShubhamBansal Vous devez ajouter pedantic: ^1.8.0 à vos dev_dependencies dans pubspec.yaml .



0
votes

Quelque chose de complètement différent mais le même. Notre code a été construit dans Flutter v1.12.13hotfix9. lorsque nous avons fait une nouvelle installation avec flutter 1.17.1, la construction s'est interrompue avec une erreur similaire. Il semble que la nouvelle version de Flutter ne soit pas rétrocompatible sur certaines parties. Nous avons résolu le problème en installant l'ancienne version.


0 commentaires

9
votes

Avec la nouvelle version de flutter, c'est devenu une erreur - mais cela peut facilement être corrigé en mettant à jour la version sdk:

environment:
  sdk: ">=2.7.0 <3.0.0" 

N'oubliez pas de redémarrer VisualStudio Code ou tout autre IDE que vous utilisez.


0 commentaires

0
votes

Exécutez cette commande à partir du répertoire racine de votre projet:

dart --enable-experiment=spread-collections lib


0 commentaires