dart 是否关闭之前Flutter项目的零安全?

zsbz8rwp  于 2022-12-15  发布在  Flutter
关注(0)|答案(8)|浏览(262)

我想升级我的flutter以获得新的特性,例如null safety,但是我不希望我以前的项目影响它们。我只想对我的新flutter项目进行新的更改,我想以类似于旧方法的方式运行我的旧项目。有什么办法吗?请指导我。
谢谢

lmvvr0a8

lmvvr0a81#

在旧项目的pubspec.yaml文件中设置SDK约束就足够了。
例如,以下代码未启用null safety:

environment:
  sdk: ">=2.11.0 <3.0.0"

也可以在Dart文件的顶部指定,以禁用对该文件的空值检查。

// @dart=2.9
ijnw1ujt

ijnw1ujt2#

我在beta频道上升级到Dart v2.12后,上面的答案对我不起作用。所以我找到了以下选项:
您可以将其添加到任何dart文件的顶部以禁用空值安全检查。

// @dart=2.9

或者类似于上面的答案,我必须包含一个2.12之前的版本来禁用null安全。

environment:
  sdk: ">=2.11.0 <3.0.0"
hs1ihplo

hs1ihplo3#

您可以使用--no-sound-null-safety选项和flutter run运行flutter项目,而不使用null safety。
您也可以将其作为参数添加到VSCode的launch.json

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

cwxwcias4#

你的项目可能是用flutter老版本(低于2.+的版本)开发的。2 dart 2.x.x版本的主要变化是启用了null安全。3目前,www.example.com上的很多库pub.dev都升级到了null安全特性。
但是你的旧项目可能有一些库仍然没有更新到null安全。所以,你的项目可能有两者的混合。在这种情况下,@miguel答案是部分有效的(定义sdk: ">=2.7.0 <3.0.0"约束)。要运行你的项目,你还需要取消null安全。就像通过运行下面的命令
Flutter-无声-零安全
或通过转到运行-〉编辑配置将此命令添加到配置中。它将打开以下弹出窗口,突出显示的字符串与x1c 0d1x相同

**建议:**将您的项目更新为null safety。Read more about null-safety

u0sqgete

u0sqgete5#

我遇到了同样的问题,在做了大量的降级和升级之后(尤其是当旧项目需要用旧版本的Flutter和build_runner构建时),我发现了关于Flutter Version Manager的信息请在这里查看git repo:https://github.com/leoafarias/fvm。这样做的最大好处是可以指定每个项目要使用的版本。
以下内容来自回购协议中的说明:
1.要全局激活,请运行pub global activate fvm
1.要安装特定版本的Flutter,请运行fvm install <version>
1.然后进入项目的根目录并运行fvm use <version>
瞧,希望能帮上忙👍。
查看repo以获取更多像fvm use <version> --global这样的命令来轻松切换全局版本和更多有趣的东西。

sgtfey8w

sgtfey8w6#

您可以使用var或dynamic声明变量,现在编译器不会检查variable type

var answerText;
dynamic answerColor;

Answer({this.answerText, this.answerColor});

如果您尝试在没有null安全检查的情况下构建,请在main.dart的第一行中使用注解行// @dart=2.9

// @dart=2.9

import 'package:flutter/material.dart';

void main() async {
  
  runApp(
    const MyApp()
  );
}
qpgpyjmq

qpgpyjmq7#

从Gradle文件中删除以下代码行,或仅将其注解掉,以便在不使用Gradle执行的情况下运行代码- if(flutterRoot == null){ throw new GradleException(“Flutter SDK未找到。使用flutter.sdk在www.example.com文件中定义位置local.properties。”)}

z3yyvxxp

z3yyvxxp8#

environment:
sdk: ">=2.7.0 <3.0.0"

相关问题