30

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)
Boken
  • 4,825
  • 10
  • 32
  • 42
Vince Varga
  • 6,101
  • 6
  • 43
  • 60
  • You need to be on master branch – Rémi Rousselet Apr 02 '19 at 14:18
  • The experimental features are only on `master` branch. By default you are on `stable` branch. You can see channels using `flutter channel`. Read https://github.com/flutter/flutter/wiki/Flutter-build-release-channels for more info. – Doc Apr 02 '19 at 18:17
  • if you still can't get it to work, this worked for me: https://stackoverflow.com/questions/59458433/flutter-flow-control-collections-are-needed-but-are-they – Matjaz Hirsman Mar 11 '20 at 11:40

9 Answers9

26

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"
atreeon
  • 21,799
  • 13
  • 85
  • 104
24

In my case, I have followed these two steps and It worked for me.

  1. run "flutter upgrade"

  2. changing the sdk in the environment in pubspec.yaml

    environment:
      sdk: ">=2.6.0 <3.0.0"
    
Tasnim
  • 551
  • 3
  • 9
14

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.

C4s4r
  • 404
  • 3
  • 7
4

You are running an old version of flutter

Spreading is available starting at flutter 1.5 and dart 2.3

Run:

flutter upgrade
Boken
  • 4,825
  • 10
  • 32
  • 42
ikben
  • 4,246
  • 4
  • 21
  • 27
3

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"
Natesh bhat
  • 12,274
  • 10
  • 84
  • 125
3

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

For more information head to this documentation

Thomas
  • 174,939
  • 50
  • 355
  • 478
0

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.

0

Run this command from your project's root directory:

dart --enable-experiment=spread-collections lib
iDecode
  • 22,623
  • 19
  • 99
  • 186
0

After updating the environment in pubspec.yml don't forget restart your IDE

environment:
  sdk: ">=2.7.2 <3.0.0"
0xFK
  • 2,433
  • 32
  • 24