Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何调试双问号';上的空安全默认值类型错误';_Flutter_Dart_Dart Null Safety - Fatal编程技术网

Flutter 如何调试双问号';上的空安全默认值类型错误';

Flutter 如何调试双问号';上的空安全默认值类型错误';,flutter,dart,dart-null-safety,Flutter,Dart,Dart Null Safety,我最近在使用双问号时遇到了一些奇怪的行为。 下面是示例代码: void main() { String strA; String strB; print('start'); strB = strA ?? 5; // wrong use of default value type. It should be a String here. print('end'); } 程序永远不会运行到最后,甚至不会抛出任何错误消息 是否预期该行为?如何运行此代码 当我运行它时,我得到以下

我最近在使用双问号时遇到了一些奇怪的行为。 下面是示例代码:

void main() {
  String strA;
  String strB;

  print('start');
  strB = strA ?? 5; // wrong use of default value type. It should be a String here.
  print('end');
}
程序永远不会运行到最后,甚至不会抛出任何错误消息


是否预期该行为?

如何运行此代码

当我运行它时,我得到以下输出:

▶ dart test.dart
start
Unhandled exception:
type 'int' is not a subtype of type 'String'
#0      main (file:///Users/renato/programming/projects/test.dart:6:3)
如我所料

您使用的Dart版本是什么(运行
Dart--version
)?确保您有最新版本,如
2.10

如果您仍然有问题,您可能会有一个本地
analysis\u options.yaml
文件,该文件会覆盖Dart编译器检查,以便更宽松,在这种情况下,它可能不会检查类型(我不确定哪个选项会启用此功能,但我认为这是可能的)

检查分析选项的工作方式

我建议您始终通过将以下内容添加到分析选项文件来启用“强模式”:

analyzer:
  strong-mode:
    implicit-casts: false
    implicit-dynamic: false
顺便说一句,如果您想尝试新的Dart NNBD(默认情况下不为空)实验功能,您需要使用Dart dev频道版本,并使用
Dart--enable experiment=non-nullable file.Dart运行您的程序


要了解如何启用NNBD,请查看有关它的博客文章。

首先,您应该使用
String使您的
strA
为空?strA
。无论如何,
不能将“Object”类型的值分配给“String”类型的变量。
。该程序甚至不会编译。实际上,它可以在我的计算机上编译而没有任何错误(在Android Studio和DartPad上试用过),直到运行时才会抛出错误消息。主要问题发生在我试图从它的示例(Todo)学习riverpod包时,而我犯了一个非常大的转储错误,写
id=id_uuid.v4()
id=id_uuid.v4。调试花了我一段时间,因为它只通过这一行,没有抛出任何错误消息。所以我在这里制作了一个小的可复制代码。感谢神秘的力量,这个简单的例子现在可以正常工作了。奇怪的是,今天早上在我的Android工作室(Dart 2.11.0-213.1.beta(beta))和DartPad online(基于Flatter 1.23.0-18.1.pre-Dart SDK 2.10.3)中发生了这样的事情。它现在全部打印出错误消息。非常感谢。