错误:这需要启用“不可为空”的实验

时间:2019-09-14 09:51:28

标签: flutter dart

我正在玩非空类型,并将其添加到我的analysis_options.yaml

analyzer:
  enable-experiment:
    - non-nullable

我有一个使用可空性扩展的代码生成器。可视代码适合我的代码。

现在,我尝试运行:

flutter packages pub run build_runner watch 

我收到此错误消息:

[SEVERE] Failed to snapshot build script .dart_tool/build/entrypoint/build.dart.
This is likely caused by a misconfigured builder definition.
[SEVERE] xyz.dart:95:7: Error: This requires the 'non-nullable' experiment to be enabled.Try enabling this experiment by adding it to the command line when compiling and running.

如何将--enable-experiment:non-nullable传递给flutter packages pub run

如果我跑步,也会发生同样的情况:

flutter build ios

我收到错误消息:

  lib/main.dart:61:26: Error: This requires the 'non-nullable' experiment to be enabled.

    Try enabling this experiment by adding it to the command line when compiling and running.

同样的问题:我如何将--enable-experiment:non-nullable传递给flutter build

5 个答案:

答案 0 :(得分:27)

升级Flutter后,对我来说出现了此问题。
我通过再次清理和升级项目依赖项解决了该问题。
在项目的根目录中运行以下命令:

flutter clean
flutter packages pub upgrade
flutter pub run build_runner build

也如其他人所说,请确保您在pubspec.yaml中的sdk版本与您的flutter sdk版本兼容。

答案 1 :(得分:4)

为了让 null 安全工作,

environment:
   sdk: ">=2.12.0 <3.0.0"

至少应该是这个版本。 然后运行flutter clean 并且flutter pub get它会起作用。

答案 2 :(得分:0)

  

对我来说,一个简单的解决方法是确保analysis_options.yaml位于   根文件夹。就我而言,它位于lib文件夹中,   实验性功能一直有效,直到我将文件移到同一文件夹   作为pubspec.yaml。其他可能发生的事情包括更新   使实验功能不再需要,因此请更新到   抖动主通道上的最新版本可能还有用   验证文件位置。尚未获得命令行   使用此选项运行。

答案 3 :(得分:0)

根据您的操作,有时就像更改pubspec.yaml文件中的环境以更新低端一样简单,例如,更改低端,例如

environment:
sdk: ">=2.0.0 <3.0.0"

environment:
sdk: ">=2.6.0 <3.0.0"

environment:
sdk: ">=2.7.0 <3.0.0"

这已解决了导致此错误的各种原因(在最新版本的flutter和dart中使用传播语法也会导致此错误),但是我不需要较旧的环境。

答案 4 :(得分:0)

尝试

flutter clean

这对我有用!