0

目前我正在尝试运行一个自动生成响应文件的项目。但是我在运行 build_runner cmd 时遇到了一些错误。以下是我得到的错误

自动生成文件的命令。

flutter pub run build_runner build
Bad state: Unexpected diagnostics:
/Users/user/development/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:691:16 - This requires the 'non-nullable' language feature to be enabled.
[SEVERE] json_serializable:json_serializable on lib/database/database_helper.dart:

Bad state: Unexpected diagnostics:
/Users/user/development/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:691:16 - This requires the 'non-nullable' language feature to be enabled.
[INFO] 1.7s elapsed, 1/17 actions completed.
[INFO] 2.8s elapsed, 1/17 actions completed.
[INFO] 3.9s elapsed, 1/17 actions completed.
[INFO] 5.0s elapsed, 1/17 actions completed.
[INFO] 6.0s elapsed, 1/17 actions completed.


这仍然处于无限循环中并且永远不会结束。任何想法,如果有人遇到过这种问题。

以下是 Pubspec.yaml 文件

几天来一直坚持这些,如果您找到任何解决方案,请让我知道它为什么会发生。

将环境更改为sdk: ">=2.12.0 <3.0.0"

但这是我在运行命令时遇到的错误

[SEVERE] Failed to snapshot build script .dart_tool/build/entrypoint/build.dart.
This is likely caused by a misconfigured builder definition.
[SEVERE] .dart_tool/build/entrypoint/build.dart:27:3: Warning: Operand of null-aware operation '?.' has type 'SendPort' which excludes null. - 'SendPort' is from 'dart:isolate'.  sendPort?.send(result);  ^Error: Cannot run with sound null safety, because the following dependenciesdon't support null safety: - package:build_runner_core - package:json_serializable - package:retrofit_generator - package:source_gen - package:build_config - package:build_runner - package:build - package:json_annotation - package:glob - package:crypto - package:logging - package:watcher - package:build_resolvers - package:timing - package:graphs - package:package_config - package:yaml - package:analyzer - package:built_collection - package:code_builder - package:dart_style - package:dio - package:tuple - package:retrofit - package:checked_yaml - package:pubspec_parse - package:build_daemon - package:args - package:io - package:convert - package:pub_semver - package:quiver - package:_fe_analyzer_shared - package:built_value - package:http_parser - package:http_multi_server - package:shelf - package:stream_transform - package:mime - package:shelf_web_socket - package:web_socket_channel - package:cli_util - package:fixnumFor solutions, see https://dart.dev/go/unsound-null-safety.dart_tool/build/entrypoint/build.dart:25:44: Error: The parameter 'sendPort' can't have a value of 'null' because of its type 'SendPort', but the implicit default value is 'null'. - 'SendPort' is from 'dart:isolate'.Try adding either an explicit non-'null' default value or the 'required' modifier.void main(List<String> args, [_i6.SendPort sendPort]) async {   

谢谢。

4

4 回答 4

0

这是一个“缺少空安全”生成的错误,

Dart 语言中的 null 安全性是什么?

回答 :

在面向对象的编程语言中保证没有对象引用将具有 null 或 void 值。

当您选择 null 安全时,代码中的类型默认情况下是不可为 null 的,这意味着变量不能包含 null,除非您说它们可以。

你如何避免空安全错误?

您可以通过两种方式做到这一点:

  • 使用 dart 或 flutter 命令的 --no-sound-null-safety 标志禁用声音空安全: $ dart --no-sound-null-safety run $ flutter run --no-sound-null-safety。

  • 或者,将入口点(包含 main() 函数的文件)中的语言版本设置为 2.9。

个人建议: 尝试迁移到空安全,因为颤振将仅支持空安全插件,如果您仍然采用旧方式,您将面临很多没有文档的问题,所以最好的方法是合并到空安全版本这里是一个关于如何的链接migrate : 迁移到 null 安全 dart.dev

于 2021-11-09T15:23:59.363 回答
0

如果你使用版本sdk: ">=2.12.0 <3.0.0。pubspec.yaml 中的所有包都将其迁移到null-safety版本,但如果您不想使用null-safety包,可以flutter run --no-sound-null-safety在终端中尝试

于 2021-11-06T17:40:25.927 回答
0

我认为您的问题与声音零安全性有关。

尝试在 pubspec.yaml 中为 null 安全设置环境

environment:
  sdk: ">=2.12.0 <3.0.0"

然后运行flutter cleanflutter pub get

此处的文档:https ://dart.dev/null-safety

于 2021-11-01T16:00:51.310 回答
0

您可以尝试在您的 pubspec.yaml 中将您的包版本设置为 :any。不推荐,但应该可以。

于 2021-11-10T22:10:18.937 回答