问题标签 [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 - 空安全 AppLocalization 字符串的最佳方法
问题
我正在使用AppLocalizations.of(context).myString
我的 null 安全颤振应用程序中的字符串国际化。
我的 IDE 告诉我AppLocalizations.of(context)
可以返回 null。处理这个问题的最佳方法是什么?有没有办法确保AppLocalizations.of(context)
永远不会返回 null?
目前,我正在采用以下方法:
完整的项目代码
发布规范.yaml
l10n.yaml
l10n/app_en_US.arb
l10n/app_en.arb
主要.dart
flutter - 继承 Dart Null 安全性以实现可测试性
我有一个与 Dart Null Safety 概念相关的问题。
想象一下,我有一个名为Bird的课程
和鸽子
现在,由于 Dart 上的 Null Safety,必须实例化角色对象。我想在构造函数中实例化它,因为我希望鸟类可以使用 Mockito 进行测试。
但是,当我写这篇
Pigeon 类显示错误,因为Bird 类没有任何零参数构造函数。
我的解决方法是使用这样的不需要的参数。
但是,我不喜欢 GetIt 部分作为我的默认值。此外,另一个程序员可能认为这是一个可选参数,因为我没有将它标记为必需,这可能会导致错误。
那么,解决这种情况的最佳实践是什么?
flutter - 如何在 Flutter 中使用 nullsafety 测试 DropdownButton?与
当使用 flutter_test 库在 Flutter 中对 DropdownButton 进行烟雾测试时,出现以下错误:
随后是一个堆栈跟踪,其中发生了一些递归,重复 visitChildren 和 _unmount 数百次:
该错误仅在测试时发生,并且应用程序在物理设备上运行而没有任何错误。
主要.dart
widget_test.dart
DropdownButton<String?>
可以通过将main.dart 设置为来“修复”该错误DropdownButton<String>
。我明白 null 不能是 DropDownButton 的值,因此不能是“?” 可以直接删除,否则无论如何它都会在 null 上崩溃。但是我不明白为什么当数据足够时它会崩溃。
此处的最小代码示例。
firebase - 如何在简单的flutter-dart代码中使用对象snapshot.data实现空安全?
我是颤振/飞镖编码的新手,请帮我解决以下问题:
这是我试图从 FireStore 集合“DinnerNames”中获取数据的代码,但我在该行的snapshot.data对象上得到一个分析错误:
itemCount:snapshot.data.documents.length
:
问题:
值可以为 'null' 的表达式必须先进行 null 检查,然后才能取消引用。在取消引用之前尝试检查该值是否为“null”。
这是生成错误的代码示例:
这是颤振版本:
flutter-dependencies - Dart 2.10 和 `required` 关键字
我对 Dart 和 Flutter 都是新手,所以如果这离题了,请多多包涵。但是我已经用尽了我的 Googlefu 并且无法找到答案。
语境
我正在运行 Dart 2.10.4 和 Flutter 1.22.5。在这一点上,我只是从 Github 克隆了一堆示例应用程序并在本地运行它们
- 跑步
flutter pub get
- 然后在 Android Studio 中点击 Run
我熟悉其他语言的包管理,并阅读过有关与 Dart 的潜在差异的文档,特别是
pub get 尽可能使用锁定在其中的依赖项的版本(pubspec.lock)
“如果可能”告诉我pubspec.lock
文件并不总是得到尊重。我熟悉的行为是“如果不可能”引发错误。
我应该提一下,我克隆的所有存储库都不是非常新的。它们都有一年多的历史,但都有最近的更新。
发生了什么
在所有的项目中,做一个flutter pub get
改变 pubspec.lock
。这些更改都是将依赖项升级到一个nullsafety
版本。例如boolean_selector
从1.0.5
到2.1.0-nullsafety.1
。起初这让我很困惑。深入pubspec.yaml
研究受影响包的文件后发现,我的 Dart 版本确实可以满足 SDK 约束,例如boolean_selector。由于required
关键字,这些版本更改破坏了所有代码库。
问题 1
据我了解,Null-Safety 更改的一部分是@required
注释变为required
. 据我了解,这些变化要到 Dart 2.12 才会出现。那么这里发生了什么?为什么包要发布nullsafety
Dart 2.10 的版本?
问题2
pubspec.lock
我当前的 Dart 版本可以满足该文件。再次使用该boolean_selector
示例。有问题的 repo 将其锁定为 1.0.5,其 SDK 约束为sdk: '>=2.0.0 <3.0.0'
. 我正在运行 Dart 2.10。一切都应该没问题。为什么要pub get
强制升级到最新的兼容版本?
问题 3
我认为好的也许required
是我们可以为 Dart 2.10 启用的实验性功能。我阅读了有关 NNBD 并dart migrate
尝试过的信息。它似乎没有做任何事情required
并且总是会出错。我读到dependency_overrides
要使用更新版本的analyzer
. 我会得到同样的错误。我显然错过了一些东西。如果 Dart 2.10 兼容required
(而不是@required
),我该如何做到这一点?
dart - 带有命名参数的回调函数中的 Dart Null 安全性
以下代码在使用 Null Safety 编译时失败,出现以下错误:
参数namedParam
不能有值,null
因为它的类型,并且没有提供非空默认值。
在没有 Null Safety 的情况下编译时,代码编译得非常好。
编译失败的具有Null Safety 的DartPad
没有 Null Safety 的DartPad编译良好
有没有办法解决它:
- 无需切换到位置参数
AND - 不制作命名参数
nullable
?
flutter - 相当于 Dart 中 Swift 的 if let 和 guard let
刚开始使用原生 iOS 背景的 Flutter,所以我有一个关于 Dart beta 空安全性的快速问题。
所以在 Swift 中,因为他们和 Kotlin 一样从一开始就有 null 安全的想法,所以我非常喜欢该语言的两个特性是if let
和guard let
. 这两个使使用可选值变得更加容易。我不确定 Dart 的 beta 版本是否有类似的东西。
谢谢
flutter - 库 'package:flutter/material.dart' 是遗留的,不应导入到 null 安全库中
我有一个空安全库,在示例文件夹中我使用以下导入:
但是,linter 给了我以下警告:
库 'package:flutter/material.dart' 是遗留的,不应导入到 null 安全库中。尝试迁移导入的库。import_of_legacy_library_into_null_safe
示例项目的 pubspec.yaml 文件指定了 Dart SDK 的 beta 版本:
material.dart 现在不是已经转换了吗?我需要在 pubspec.yaml 中添加其他内容还是等待稳定版本发布?