I want to use the new spread syntax in Dart.
I'm using Android Studio for Flutter development and I receive this error.
This requires the --spread-collections experiment to be enabled
ListView(children: [...listTiles, MyWidget()])
However, I didn't find anywhere where I could specify this option.
I couldn't even make it work on the command line. flutter --spread-collections run
gives Could not find an option named "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)
In my case, I have followed these two steps and It worked for me.
run " flutter upgrade "
changing the sdk in the environment in pubspec.yaml
environment: sdk: ">=2.6.0 <3.0.0"
You need to create an analysis_options.yaml file in the root of your flutter app and write something like
analyzer:
enable-experiment:
- spread-collections
Also make sure to switch to the correct channel where the new feature is included eg (dev, beta or master)
flutter channel dev
And also make sure you have a recent enough version of flutter
flutter upgrade
Ensure you are on the right version of flutter and dart that allows that feature by running
flutter --version
you may also have to manually change your pubspec.yaml file to specify the correct dart sdk (if so rerun flutter upgrade)
environment:
sdk: ">=2.10.0-0 <3.0.0"
With the new version of flutter it became an error - but it can easily be fixed by updating the sdk version:
environment:
sdk: ">=2.7.0 <3.0.0"
Just don't forget to restart VisualStudio Code or whatever IDE you're using.
You are running an old version of flutter
Spreading is available starting at flutter 1.5 and dart 2.3
Run:
flutter upgrade
Here's some fix you can try out :
1) Keep the analysis_options.yaml in your root folder with this code:
analyzer:
enable-experiment:
- control-flow-collections
2) Don't use brackets {} in between your for loops Ex:
<Widget>[
for (final category in categories)
CategoryWidget(category: category)
],
3) Important step which is probably why it's not working for you: Change your Dart version constraint in the pubspec.yml file in your root folder to 2.5.2 or above.
environment:
sdk: ">=2.5.2 <3.0.0"
The current answer that is working in the latest Flutter 1.17.1 or Dart 2.8.2
Create a analysis_options.yaml in the directory of the pubspec.yaml file
Write this code inside the file:
include: package:pedantic/analysis_options.1.8.0.yaml
linter:
rules:
- prefer_spread_collections
Something completely different yet the same. Our code was built in Flutter v1.12.13hotfix9. when we did a new installation with flutter 1.17.1 the build broke with a similar error. It seems that the new release of Flutter is not backwards compatible on certain parts. We fixed the problem by installing the older version.
从项目的根目录运行此命令:
dart --enable-experiment=spread-collections lib
After updating the environment in pubspec.yml don't forget restart your IDE
environment:
sdk: ">=2.7.2 <3.0.0"
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.