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()])
8 Réponses :
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
Vous utilisez une ancienne version de Flutter
La diffusion est disponible à partir de flutter 1.5 et dart 2.3
Courir:
flutter upgrade
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
Dans mon cas, j'ai suivi ces deux étapes et cela a fonctionné pour moi.
lancez " Flutter Upgrade "
changer le sdk dans l'environnement dans pubspec.yaml
environment: sdk: ">=2.6.0 <3.0.0"
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
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
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
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
.
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.
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.
Exécutez cette commande à partir du répertoire racine de votre projet:
dart --enable-experiment=spread-collections lib
Vous devez être sur la branche principale
Les fonctionnalités expérimentales sont uniquement sur
master
branche. Par défaut, vous êtes surstable
branchestable
. Vous pouvez voir les canaux en utilisant leflutter 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/...