问题标签 [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.
flutter - 错误:当使用健全的空安全性时,默认情况下库不能选择退出空安全性
在升级 Flutter 包以实现 null 安全性时,运行时出现此错误flutter test
:
答案就在那里,但我仍然困惑了一段时间,所以我在下面添加我的答案。
flutter - 迁移到 Dart 空安全后出现“无法无条件调用运算符,因为接收器可以为空”错误
我正在升级一个基于 Flutter 框架的个人包。我在 Flutter Text 小部件源代码中注意到这里有一个空检查:
但是,textSpan!
仍在使用!
运算符。不应该textSpan
在不使用!
运算符的情况下提升为不可为空的类型吗?但是,尝试删除运算符会出现以下错误:
这是一个独立的示例:
我得到一个编译时错误:
错误:“字符串?”类型的值 无法从函数“myString”返回,因为它的返回类型为“String”。
或者,如果我尝试_mySting.length
获取以下错误:
不能无条件访问属性“长度”,因为接收者可以为“空”。
我认为进行 null 检查会提升_myString
为不可为 null 的类型。为什么不呢?
我的问题在 GitHub 上得到了解决,所以我在下面发布了一个答案。
kotlin - Dart“健全的零安全性”与 Kotlin 零安全性有何不同?
这个 Dart 官方视频指出,Dart 所谓的“健全的 null 安全”比 Kotlin 的 null 安全设计要好,因为它可以根据变量是否声明为 null 来优化代码,以及其他语言(我假设这是指包括 Kotlin 在内的语言) ) 必须进行运行时检查以确保空值安全。
那么,Dart 做了哪些额外的优化呢?
它如何与不支持 null 安全的遗留代码库互操作,同时确保 null 安全?
flutter - 如何使用 Flutter null 安全性处理生成的代码?
我正在使用颤振改造包(https://pub.dev/packages/retrofit),但他们还没有空安全版本。当我运行构建并且生成的代码没有空检查时。如果没有手动将“// @dart=2.9”添加到每个生成的文件,我怎么能解决这个问题?
flutter - 颤振零安全
我有一个在引入空安全性之前做过的项目,现在我的代码有很多错误,我想将我的颤振和飞镖降级到空安全性之前。我怎样才能做到这一点?
dart - Dart 空安全 - 以空安全的方式从地图中检索值
我有类似于这个示例代码的代码(别介意它没有意义):
飞镖分析器通过以下警告向我String s = myMap[1];
发出警告:
“字符串?”类型的值 不能分配给“字符串”类型的变量。尝试更改变量的类型,或将右侧类型转换为“字符串”。
我看到这种情况正在发生,因为从地图中检索值可能会导致null
. 为什么以下代码段会给我同样的警告?
flutter - Null 安全性和检查“Null”
这段代码
以前工作过,但现在测试因抛出而失败,
访问时抛出错误j['DialCode']
('DialCode' 属性可能不存在),AFAIK 访问 DialCode 属性j['DialCode']
给了我Null
对象,但我如何摆脱使用j['DialCode']??""
flutter - 在具有空安全性的颤动中将函数作为参数传递
升级到 Flutter 1.25.0-8.1.pre 后默认启用 null 安全,我开始修改我的项目的代码。一切正常,除了作为参数传递的函数,如下例所示:
onPressed是必需的参数,因此它不能为空,但是在尝试将函数传递给CupertinoButton时出现错误:
The argument type 'Function' can't be assigned to the parameter type 'void Function()?'.
我已经在寻找答案和可能的解决方案很长时间了,但我还没有找到。任何帮助将非常感激。
dart - Dart null 安全性不适用于类字段
我已将我的 Dart 代码迁移到 NNBD / Null Safety。其中一些看起来像这样:
这会导致两个分析错误。对于_a += 'a';
:
值可以为 'null' 的表达式必须先进行 null 检查,然后才能取消引用。在取消引用之前尝试检查该值是否为“null”。
对于Bar() {
:
必须初始化不可为空的实例字段“_a”。尝试添加初始化表达式,或在此构造函数中添加字段初始化程序,或将其标记为“迟到”。
在这两种情况下,我已经完全按照错误提示进行了操作!那是怎么回事?
我正在使用 Dart 2.12.0-133.2.beta(12 月 15 日星期二)。
编辑:我发现这个页面说:
分析器无法对整个应用程序的流程进行建模,因此它无法预测全局变量或类字段的值。
但这对我来说没有意义——在这种情况下只有一个可能的流控制路径if (_a != null)
——没有异步代码,而且 Dart 是单线程的——所以不是本地的_a += 'a';
也没关系。_a
并且错误消息Bar()
明确说明了在构造函数中初始化字段的可能性。
flutter - 我可以发布我的颤振应用程序并在生产中启用飞镖空安全功能吗
我已经阅读了多篇这样的文章或官方 dart 文档,flutter 开发人员应该尝试 dart 中的 null 安全功能。
然而,我们不应该发布具有空安全功能的生产应用程序。上面链接的第一篇文章(强调我的):
技术预览 2 的 Flutter 实验:今天。因为我们已经成功地将核心 Flutter 框架迁移到 null 安全性,您可以尝试 null 安全性来学习新的语言功能并使用一个小的 Flutter 示例进行试验。如果您是包作者,如果您有一个已由我们迁移的小型依赖项集,您也可以进行试用迁移。您需要传递一个实验标志,不应该在生产中使用它,也不应该发布任何迁移的包。
因此我的问题如下:
- 我们是否能够发布启用了 null 安全功能的 Flutter 应用程序?
- 如果他/她想发布具有 null 安全功能的 Flutter 应用程序(除了 null 安全性不是 100% 错误证明的问题),是否有任何人应该意识到的巨大缺点?