简体   繁体   中英

How can I enable Flutter/Dart language experiments?

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.

  1. run " flutter upgrade "

  2. 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

For more information head to this documentation

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM