【问题标题】:How can I enable Flutter/Dart language experiments?如何启用 Flutter/Dart 语言实验?
【发布时间】:2019-08-23 21:55:42
【问题描述】:

我想在 Dart 中使用新的 spread syntax

我正在使用 Android Studio 进行 Flutter 开发并收到此错误。

这需要启用 --spread-collections 实验

ListView(children: [...listTiles, MyWidget()])

但是,我没有找到可以指定此选项的任何地方。

我什至无法让它在命令行上运行。 flutter --spread-collections run 给了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)

【问题讨论】:

标签: intellij-idea dart flutter


【解决方案1】:

您需要在 Flutter 应用的根目录中创建一个 analysis_options.yaml 文件并编写类似的内容

analyzer:
  enable-experiment:
    - spread-collections

还要确保切换到包含新功能的正确频道,例如(开发版、测试版或主版)

flutter channel dev

还要确保你有足够新的 Flutter 版本

flutter upgrade

确保您使用的是正确版本的颤振和飞镖,通过运行允许该功能

flutter --version

您可能还必须手动更改 pubspec.yaml 文件以指定正确的 dart sdk(如果是这样,请重新运行 Flutter 升级)

environment:
  sdk: ">=2.10.0-0 <3.0.0"

【讨论】:

    【解决方案2】:

    你正在运行旧版本的颤振

    flutter 1.5dart 2.3

    开始提供传播功能

    运行:

    flutter upgrade
    

    【讨论】:

    • 谢谢,请注意我在 4 月份提出了这个问题,当时 Dart 2.3 尚未在任何渠道中用于 Flutter。
    • 还要看你是哪个flutter通道
    【解决方案3】:

    就我而言,我遵循了这两个步骤并且它对我有用。

    1. 运行“flutter upgrade

    2. 在 pubspec.yaml 中更改环境中的 sdk

      environment:
        sdk: ">=2.6.0 <3.0.0"
      

    【讨论】:

    • 不需要先改SDK再调用"flutter upgrade"
    • 反正你要记得重启IDE
    【解决方案4】:

    这里有一些你可以尝试的解决方法:

    1) 使用以下代码将 analysis_options.yaml 保存在您的根文件夹中:

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

    2) 不要在 for 循环之间使用方括号 {} 例如:

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

    3) 重要的一步,这可能是它不适合您的原因: 将根文件夹中 pubspec.yml 文件中的 Dart 版本约束更改为 2.5.2 或更高版本。

    environment:
      sdk: ">=2.5.2 <3.0.0"
    

    【讨论】:

      【解决方案5】:

      在最新的 Flutter 1.17.1 或 Dart 2.8.2 中工作的当前答案

      在pubspec.yaml文件所在目录下创建一个analysis_options.yaml

      在文件中写下这段代码:

      include: package:pedantic/analysis_options.1.8.0.yaml 
      
      linter:
        rules:
          - prefer_spread_collections
      

      For more information head to this documentation

      【讨论】:

      • 我试过了。但我收到一个错误'include: package:pedantic/analysis_options.1.8.0.yaml' 找不到文件。
      • @ShubhamBansal 您需要在pubspec.yaml 中将pedantic: ^1.8.0 添加到您的dev_dependencies
      【解决方案6】:

      完全不同但又相同的东西。我们的代码是在 Flutter v1.12.13hotfix9 中构建的。当我们使用颤振 1.17.1 进行新安装时,构建因类似错误而中断。似乎 Flutter 的新版本在某些部分不向后兼容。 我们通过安装旧版本解决了这个问题。

      【讨论】:

        【解决方案7】:

        随着新版本的颤振,它变成了一个错误 - 但可以通过更新 sdk 版本轻松修复:

        environment:
          sdk: ">=2.7.0 <3.0.0" 
        

        不要忘记重新启动 VisualStudio Code 或您正在使用的任何 IDE。

        【讨论】:

          【解决方案8】:

          从项目的根目录运行此命令:

          dart --enable-experiment=spread-collections lib
          

          【讨论】:

            【解决方案9】:

            在 pubspec.yml 中更新环境后别忘了重启你的 IDE

            environment:
              sdk: ">=2.7.2 <3.0.0"
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2018-05-13
              • 2019-02-20
              • 1970-01-01
              • 2021-11-04
              • 1970-01-01
              • 1970-01-01
              • 2016-05-06
              • 2023-02-04
              相关资源
              最近更新 更多