我想升级我的 flutter 以获取空安全等新功能,但我不希望我之前的项目影响它们。我只想对我的新 flutter 项目进行新的更改,我想以类似于旧方式的方式运行我的旧项目。有什么办法吗?请指导我完成它。
谢谢你
在旧项目的
pubspec.yaml
文件中设置 SDK 约束就足够了。
例如,以下内容未启用空安全:
environment:
sdk: ">=2.11.0 <3.0.0"
您还可以在 Dart 文件顶部指定以禁用该文件的 null 检查。
// @dart=2.9
在我升级到
Dart v2.12
频道上的 beta
后,上述答案对我不起作用。所以我找到了这些选项:
您可以将其添加到任何 dart 文件的顶部以禁用空安全检查。
// @dart=2.9
或者类似于上面的答案,我必须包含 2.12 之前的版本才能禁用 null 安全性。您可以在
pubspec.yaml
文件中编辑此行。
environment:
sdk: ">=2.11.0 <3.0.0"
您可以使用
--no-sound-null-safety
选项和 flutter run
在没有空安全的情况下运行 flutter 项目。
您也可以将其添加为 VSCode 中
launch.json
中的参数
"configurations": [
{
"name": "Flutter",
"request": "launch",
"type": "dart",
"flutterMode": "debug",
"args": [
"--no-sound-null-safety"
],
},
]
您的项目可能是使用 flutter old(版本低于 2.+)开发的。 2.x.x dart 版本的主要变化是启用空安全。目前 pub.dev 上的很多库已经升级为 null 安全功能了。
但是您的旧项目可能有一些库仍未更新为空安全。因此,您的项目可能混合了两者。在这种情况下,@miguel 答案部分有效(定义
sdk: ">=2.7.0 <3.0.0"
约束)。要运行您的项目,您还需要取消零安全性。就像运行以下命令
flutter run --no-sound-null-safety
或通过转到运行->编辑配置在配置中添加此命令。它将打开以下弹出窗口和突出显示的字符串,与
相同**推荐:**将您的项目更新为空安全。 了解更多关于空安全的信息
我遇到了同样的问题,在进行了大量的降级和升级之后(特别是当旧项目需要使用旧版本的 Flutter 和 build_runner 构建时)我发现了关于 Flutter Version Manager 检查这里的 git repo: https://github.com/leoafarias/fvm。最好的事情是您可以指定每个项目要使用哪个版本。
以下内容来自存储库中的说明:
pub global activate fvm
fvm install <version>
fvm use <version>
瞧瞧!希望有帮助👍.
检查存储库以获取更多命令,例如
fvm use <version> --global
,以轻松切换全局版本和更多有趣的内容。
您可以使用 var 或dynamic 声明变量,现在编译器不会检查
variable type
。
var answerText;
dynamic answerColor;
Answer({this.answerText, this.answerColor});
如果您尝试在没有空安全检查的情况下进行构建,请使用此注释行
// @dart=2.9
在 main.dart 第一行。
// @dart=2.9
import 'package:flutter/material.dart';
void main() async {
runApp(
const MyApp()
);
}
从 gradle 文件中删除以下代码行或将其注释掉以运行代码而不会出现 Gradle 异常 - 如果(flutterRoot == null){ throw new GradleException(“未找到 Flutter SDK。在 local.properties 文件中使用 flutter.sdk 定义位置。”) }
我不得不根据dart版本降级我的flutter SDK。我正在使用最新的
Flutter SDK 3.10.5
和 Dart version 3.0.5
并且遇到了同样的问题。所以我就跟着这个
pubspec.yaml
的环境,是环境: SDK:">=2.7.0 <3.0.0"
SDK archive
下载flutter SDK,Dart version
不属于上述范围。就我而言,它是 Flutter SDK 3.7.12
因为它的 Dart version 2.19.6
不在 >=2.7.0 <3.0.0
范围内。重建应用程序,它的效果非常好。
既然已经选择了正确的答案,我将把这篇文章发布给那些计划分阶段升级的人。这是一个 bash 脚本,可帮助您将
// @dart=2.9
注释放在 lib 目录中所有 .dart 文件的最顶部:
#!/bin/bash
process_files() {
for file in "$1"/*; do
if [ -d "$file" ]; then
process_files "$file"
elif [ "${file##*.}" = "dart" ]; then
sed -i '1s/^/\/\/ @dart=2.9\n/' "$file"
echo "Comment added to $file"
fi
done
}
main_directory="./lib"
process_files "$main_directory"
我希望它能帮助您节省一些时间。