【问题标题】:Turn off Null Safety for previous Flutter Project?关闭之前 Flutter 项目的 Null Safety?
【发布时间】:2021-03-25 20:42:19
【问题描述】:

我想升级我的 Flutter 以获得新功能,例如 null 安全性,但我不希望我之前的项目影响它们。我只想对我的新颤振项目进行新的更改,我想以类似于旧方式的方式运行我的旧项目。有什么办法吗?请指导我完成它。

谢谢

【问题讨论】:

  • 我建议您使用 Flutter upgrade 使用命令行升级 Flutter,然后使用此版本处理新项目。当你想处理以前的项目时,只需使用 Flutter downgrade v1.x.x 降级到当前版本
  • 感谢您的评论@AyadRocketfy,但还有其他方法,至少零安全不会影响我以前的项目。

标签: flutter dart upgrade


【解决方案1】:

您可以使用--no-sound-null-safety 选项和flutter run 运行没有空安全性的颤振项目。

您也可以在 VSCode 中将其作为参数添加到 launch.json

"configurations": [
        {
            "name": "Flutter",
            "request": "launch",
            "type": "dart",
            "flutterMode": "debug",
            "args": [
                "--no-sound-null-safety"
            ],
        },
]

【讨论】:

    【解决方案2】:

    在旧项目的 pubspec.yaml 文件中设置 SDK 约束就足够了。

    例如,以下内容没有启用 null 安全性:

    environment:
      sdk: ">=2.11.0 <3.0.0"
    

    您还可以在 Dart 文件的顶部指定禁用对该文件的空检查。

    // @dart=2.9
    

    【讨论】:

    • 我还能用这个 Flutter 2 小部件吗?这应该不是问题吧?
    • @MiguelRuivo 尽管这样做了,但我无法禁用 null-safety 我收到此错误:当前的 Dart SDK 版本是 2.12.2。因为onapp需要SDK版本2.7.0,版本解析失败
    • 确保在更新约束后运行flutter pub get
    • 如果我们需要它小于2.12.0 不应该这样写:&gt;=2.11.0 &lt;2.12.0
    • 在我的情况下 sdk: ">=2.7.0
    【解决方案3】:

    您的项目可能是使用 flutter old(低于 2.+ 的版本)开发的。 2.x.x dart 版本的主要变化是启用 null 安全性。目前,pub.dev 上的很多库都已升级为 null 安全功能。

    但是您的旧项目可能有一些库仍未更新为空安全。因此,您的项目可能两者兼而有之。在这种情况下,@miguel 答案部分有效(定义sdk: "&gt;=2.7.0 &lt;3.0.0" 约束)。要运行您的项目,您还需要取消零安全性。喜欢通过运行以下命令

    flutter run --no-sound-null-safety

    或通过转到运行->编辑配置在配置中添加此命令。它将打开以下弹出窗口并且突出显示的字符串与 相同

    **推荐:**将您的项目更新为空安全。 Read more about null-safety

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,在做了很多降级和升级之后(特别是当旧项目需要用旧版本的 Flutter 和 build_runner 构建时)我发现了 Flutter 版本管理器在此处查看 git 存储库:https://github.com/leoafarias/fvm。最好的一点是您可以指定每个项目要使用的版本。

      以下来自回购中的说明:

      1. 要激活全局运行pub global activate fvm
      2. 要安装特定版本的 Flutter 运行 fvm install &lt;version&gt;
      3. 然后进入项目根目录运行fvm use &lt;version&gt;

      瞧!希望对你有帮助?。

      查看 repo 以获取更多命令,例如 fvm use &lt;version&gt; --global,以便轻松切换全局版本和更多有趣的东西。

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题。

        升级到 Flutter 2.0 后需要重新获取包

        通过运行来做到这一点:

        flutter pub get
        

        或者通过将pubspec.yaml 文件保存在 VS 代码中,它将为您获取包。

        【讨论】:

        • 是的,我在包中有一个示例项目,它修复了 vscode linting
        【解决方案6】:

        我在beta 频道上升级到Dart v2.12 后,上述答案对我不起作用。所以我找到了这些选项:

        您可以将其添加到任何 dart 文件的顶部以禁用空安全检查。

        // @dart=2.9
        

        或类似于上面的答案,我必须包含 2.12 之前的版本来禁用 null 安全性。您可以在 pubspec.yaml 文件中编辑这一行。

        environment:
          sdk: ">=2.11.0 <3.0.0"
        

        【讨论】:

        • 如果您已经开始使用可选项等怎么办?
        猜你喜欢
        • 2021-02-13
        • 2022-12-11
        • 1970-01-01
        • 2020-03-26
        • 2021-11-25
        • 2021-06-05
        • 1970-01-01
        • 2022-12-02
        • 1970-01-01
        相关资源
        最近更新 更多