flattern - Flow-Control-Sammlungen werden benötigt, aber sind sie?

14

Nach dem Upgrade von Flutter (sowohl Master- als auch Stable-Version) und Dart wird eine Fehlermeldung bezüglich des Experiments angezeigt - Flow-Control-Sammlungen sind für verschiedene For-Loops, die ich im Projekt verwende, nicht aktiviert. Ich habe versucht, es mit diesem Eintrag zu beheben, aber das hat die Dinge nur seltsamer gemacht. Jetzt habe ich den folgenden Fehler, der mir sagt, dass ich das Kontrollflusssammlungs-Experiment aktivieren muss, während ich gleichzeitig erfahre, dass es nicht mehr erforderlich ist.

 eex

Dieser Fehler tritt bei jeder von mir verwendeten for-Schleife auf.

Hier ist meine Flatterversion

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)

Irgendwelche Ideen, wie man das löst?

William Terrill
quelle

Antworten:

40

Hey, ich hatte heute Morgen das gleiche Problem, habe aber eine Lösung gefunden.

1) Bewahren Sie die Datei analysis_options.yaml mit diesem Code in Ihrem Stammordner auf:

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

2) Verwenden Sie keine Klammern {} zwischen Ihren for-Schleifen. Beispiel :

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

3) Wichtiger Schritt, der wahrscheinlich der Grund ist, warum er bei Ihnen nicht funktioniert: Ändern Sie Ihre Dart-Versionsbeschränkung in der Datei pubspec.yml in Ihrem Stammordner in 2.5.2

environment:
  sdk: ">=2.5.2 <3.0.0"
Alexandre
quelle
16
Nummer 3 hat es geschafft
Ali80
Flagge control-flow-collectionsist nicht mehr erforderlich
Jibiel
10

Es reicht aus, nur die minimale Dart-Version in pubspec.yaml zu aktualisieren :

environment:
  sdk: ">=2.5.0 <3.0.0"

In den Notizen zum Dart 2.5-Änderungsprotokoll sehen Sie die neue Option zum Hinzufügen eines ifElements zu einem Sammlungsliteral.

Suragch
quelle
5

Starten Sie auch nach dem Ändern des dart versionnicht funktionierenden VS CodeEditors oder des von Ihnen verwendeten Editors neu. Überprüfen Sie dann, ob der Fehler vorliegt. Wenn ja, dann laufen flutter clean.

Thanooshan
quelle
3

Ändern Sie die Dart-Version in pubspec.yml

environment:
  sdk: ">=2.6.0 <3.0.0"

dann

 flutter pub get
 flutter clean

Und starten Sie Android Studio neu

Nüsse
quelle
2

Es hat pubspec.yamlmir gereicht, nur die minimale Dart-Version zu aktualisieren :

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