问题标签 [dart-null-safety]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
34432 浏览

flutter - Flutter 必填关键字

我真的不明白如何required工作。例如我看过这段代码:

但是required这里应该怎么做?似乎它使可选参数成为非可选参数。

0 投票
4 回答
12933 浏览

flutter - 如何在颤动中修复“文本为空”

我想创建一个具有两个选项卡的 TabBarView 的应用程序。在第一个选项卡上有一个文本字段,在另一个选项卡上有一个文本小部件,它应该显示您在文本字段中输入的文本,但我总是收到错误,因为文本为空。(我是使用颤振编程的新手)

我试图在 TextOutput 类中初始化变量,但它不起作用,因为变量是最终的。

0 投票
2 回答
58081 浏览

flutter - Dart 中的空安全是什么?

我听说过新的 Dart 空安全语言功能 (NNBD),目前是“ ‘不可为空’实验”。它应该默认引入不可为空的。

可以在此处找到功能规范,并在此处找到语言GitHub 问题

它是如何工作的,我在哪里可以尝试?

0 投票
0 回答
2422 浏览

flutter - 启用不可为空功能后,由于其类型,参数不能具有 null 值

这段代码之前没有错误,但现在它显示给我

0 投票
1 回答
3371 浏览

flutter - 如何构建具有空安全性的空工厂构造函数?

在创建静态方法持有者类的空安全性之前,常见的 Dart 模式如下:

这对于null 安全是不可能的,因为工厂构造函数的返回类型显然不可为 null。

0 投票
1 回答
2613 浏览

dart - 空安全飞镖中的可选参数是否可以自动为空?如果不是,是否有一种简单的方法可以使我的代码为空安全?

我注意到有更多用户使用 Dart/Flutter 标签在较新的 Dart SDK 版本中尝试 null 安全性,我开始阅读它,从这篇 Medium 文章开始。

我注意到在他们的所有示例中,他们都使用了位置所需的参数。但是 null 安全性如何与可选参数(包括位置参数和命名参数)一起工作?

可选参数是固有的null,这是否意味着所有可选参数都必须使用可空变量声明语法声明并启用空安全?add 似乎只是一个小小的不便?,但它可能会破坏大量使用可选参数的代码。dart 是否能够对可选参数进行例外处理(知道它们总是可以为空的),从而避免如此大的变化?或者是否有更简单的替代方法可以使我的代码与 null 安全兼容,从而避免这些更改?

0 投票
1 回答
385 浏览

flutter - Flutter - NoSuchMethodError:在 null 上调用了 getter 'isNotEmpty'

这是一个世界时间应用程序,从主屏幕开始显示默认位置,然后您可以更改位置,API 会为您获取该新位置的时间。它工作正常,但是当我点击“位置”栏中的后退按钮时,它给我一个错误!

这是我的主页代码:

} }

这是我的位置屏幕代码:

0 投票
1 回答
41 浏览

dart - 和有什么区别?和 !在 Map、List 和 Set 等集合中?

在 Dart 的集合中使用?和使用时有什么区别?!


说,我有:

现在,我可以使用

或者

他们似乎都做同样的工作,那么有什么区别呢?

0 投票
4 回答
32871 浏览

dart - 启用空安全时,默认的“列表”构造函数不可用。尝试使用列表文字,“List.filled”或“List.generate”

为什么List()Dart 的 null 安全后无法访问构造函数?

但是,您仍然可以这样做:

那么,两者有什么区别呢?他们要么都应该显示错误,要么都不显示。

0 投票
2 回答
1141 浏览

dart - 分配非空值文字时的空安全类型提升

如果我编写以下代码,则在nullsafety.dartpad.dev中:

我收到以下编译时错误:

值可以为“空”的表达式必须先进行空检查,然后才能取消引用

以及以下运行时错误:

无法在“字符串”上访问属性“长度”?因为它可能为空。

空检查文档上的类型提升说:

该语言也更聪明地了解什么样的表达方式会导致提升。明确的== null!= null当然有效。as但是使用,或 assignments!或我们将很快介绍的后缀运算符的显式强制转换也会导致提升。总体目标是,如果代码是动态正确的并且可以合理地静态计算出来,那么分析应该足够聪明才能做到这一点。

问题

name上面的代码中,不可能为 null。该文档还说分配应该导致类型提升。我误解了类型提升还是 DartPad 中的错误?

澄清

由于一些答案为错误消息提供了解决方案,因此我应该澄清一下,我并不是要解决上面的编码问题。相反,我是说我认为代码应该像它一样工作。但事实并非如此。为什么不?