【问题标题】:Flutter: This requires the 'non-nullable' language feature to be enabledFlutter:这需要启用“不可为空”的语言功能
【发布时间】:2021-09-11 00:55:03
【问题描述】:

MyApp 构造函数中出现错误

const MyApp({Key? key}) : super(key: key);

这需要启用“不可为空”语言功能。 尝试更新您的 pubspec.yaml 以将最小 SDK 约束设置为 2.12.0 或更高版本,然后运行“pub get”。

但 sdk 已经默认设置为 2.12.0

sdk: ">=2.12.0 <3.0.0"

这个项目是用最新版本的 Flutter 和 Dart 创建的。

飞镖版本:2.13.3

Flutter 版本:2.2.2

【问题讨论】:

  • 尝试运行“flutter clean”然后重建。
  • 可能你的 ide 使用的是旧版本的颤振
  • 迁移到空安全。这是official guide
  • @gegobyte 我也有同样的问题——你解决了吗?
  • @reesaspieces 我禁用了空安全性。这是我在 pubspec.yaml 中的 sdk 版本 sdk: "&gt;=2.10.0 &lt;3.0.0"

标签: flutter dart


【解决方案1】:

就我而言,我必须将其设置为 2.13.0 才能消除错误:

sdk: ">=2.13.0 <3.0.0"

【讨论】:

    【解决方案2】:

    几种可能性:

    • 文件可能已经覆盖了语言级别。您可以通过在顶部添加注释来设置文件的特定语言版本,例如:// @dart=2.9。这将禁用该文件的空安全性。检查这样的评论,并删除以解决错误
    • 类似地,如果您的应用程序的入口点(通常是lib/main.dart)具有覆盖的语言级别,它会将其应用于项目。使用 flutter run 时会出现此错误,但在开发过程中通常不会在 IDE 中显示
    • 您的 IDE 使用的 Flutter 版本可能与您用于捕获版本的版本不同。您可以通过运行which flutter 来检查您的flutter 安装位置(在类似Linux 的系统上),以查看您的PATH 可执行文件的位置。然后,您可以将其与您的 IDE 使用的版本进行比较(因 IDE 而异)

    【讨论】:

    • 是的,我检查了 main.dart 并且在最顶部有 dart 语言版本 // @dart=2.9,我删除了它但没有任何变化,所有错误仍然存​​在。
    【解决方案3】:

    这是因为您的 IDE 使用的是旧版本的颤振,所以请尝试在终端中使用此命令升级颤振

    flutter upgrade
    

    如果出现问题,尝试在终端中使用命令清理项目

    flutter clean
    

    如果你想检查flutter是否安装正确,你可以通过在终端中编写命令来检查

    flutter doctor
    

    【讨论】:

    • 它说 Flutter 在频道稳定版上已经是最新的了。之前已经多次运行flutter clean,但没有任何效果。
    猜你喜欢
    • 2020-11-18
    • 1970-01-01
    • 2022-07-25
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 2020-08-29
    • 1970-01-01
    相关资源
    最近更新 更多