flutter --flow-control-collections son necesarias, pero ¿lo son?

14

Después de actualizar flutter (versiones maestra y estable) y dardo, recibo un error sobre el experimento: las colecciones de control de flujo no están habilitadas para varios bucles for que estoy usando en el proyecto. Traté de arreglarlo usando esta entrada, pero eso hizo las cosas más extrañas. Entonces, ahora tengo el siguiente error que me dice que necesito que el experimento de control-flujo-colecciones esté habilitado y simultáneamente me dice que ya no es necesario.

 eex

Este error aparece para cada ciclo for que estoy usando.

Aquí está mi aleteo --version

Stable:
Flutter 1.12.13+hotfix.5 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 27321ebbad (13 days ago)2019-12-10 18:15:01 -0800
Engine • revision 2994f7e1e6
ToolsDart 2.7.0

Master:
Flutter 1.13.6-pre.16 • channel master • https://github.com/flutter/flutter.git
Framework • revision fcaf9c4070 (2 days ago)2019-12-21 14:03:01 -0800
Engine • revision 33813929e3
ToolsDart 2.8.0 (build 2.8.0-dev.0.0 886615d0f9)

Alguna idea de cómo resolver esto?

William Terrill
fuente

Respuestas:

40

Oye, tuve el mismo problema esta mañana pero encontré una solución.

1) Mantenga el analysis_options.yaml en su carpeta raíz con este código:

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

2) No use corchetes {} entre sus bucles for Ej:

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

3) Paso importante que probablemente sea la razón por la que no funciona: cambie la restricción de versión de Dart en el archivo pubspec.yml en su carpeta raíz a 2.5.2

environment:
  sdk: ">=2.5.2 <3.0.0"
Alexandre
fuente
16
número 3 hizo el truco
Ali80
La bandera control-flow-collectionsya no es necesaria
jibiel
10

Simplemente actualizar la versión mínima de Dart en pubspec.yaml es suficiente:

environment:
  sdk: ">=2.5.0 <3.0.0"

En las notas de Dart 2.5 Change Log puede ver la nueva opción para agregar un ifelemento a un literal de colección.

Suragch
fuente
5

Incluso después de cambiar el dart versionno funcionó, simplemente reinicie su VS Codeeditor o el que esté utilizando. Luego verifique si el error está ahí. Si es así, entonces corre flutter clean.

Thanooshan
fuente
3

Cambiar la versión de dardos en pubspec.yml

environment:
  sdk: ">=2.6.0 <3.0.0"

entonces

 flutter pub get
 flutter clean

Y reinicie Android Studio

Nueces
fuente
2

Simplemente actualizar la versión mínima de Dart pubspec.yamlfue suficiente para mí:

environment:
  sdk: ">=2.7.0 <3.0.0"
Ahmed Hassan
fuente