问题标签 [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 pub run build_runner build”而不抛出错误
我已添加// @dart=2.9
到我的所有文件中,但build_runner
不会抛出此错误:
flutter - Dart null 安全性 - 如何禁用某些文件的 null 安全性分析?
问题:
一些 pub 包还不支持 null 安全性。
例如,intl_translation无法解析具有空安全运算符的文件,如果找到任何符号(如?、!等),则抛出如下错误。
然后它生成的 dart 文件也没有使用 null 安全性,并且在$ flutter run
.
那么有没有办法为至少成功编译禁用警告或空安全?因为
$ flutter run --no-sound-null-safety
没有帮助:(
感谢您的任何帮助!
flutter - 依赖冲突
我有点困惑。当我添加easy_localization
依赖项并运行 flutter pub get 时,我会给出以下消息:
我切换到 Flutter 的稳定频道,我有以下 Dart 版本:
这是我的完整 pubspec 文件:
我不明白为什么我有依赖冲突。我也尝试删除 .lock 文件。你有什么想法哪里有问题吗?谢谢。
flutter - 颤振国际化,国际代码生成不起作用
我用Android Studio创建了一个新的Flutter 项目。我正在使用null-safety,我在物理设备上运行应用程序,但代码生成不起作用,.dart_tool 文件夹中没有flutter_gen文件夹,只有flutter_build文件夹。
我没有使用Flutter Intl插件,因为它不支持null-safety(我知道您可以制作一个脚本以在每个生成的文件的顶部添加旧的 dart 版本作为解决方法)
颤振医生命令输出:
/pubscpec.yaml:
/lib/main.dart:
/lib/l10n.yaml:
lib/l10n/app_en.arb
lib/l10n/app_es.arb
dart - 飞镖 | Flutter:如何在 null 安全下从 Map 传递函数?为什么需要 bang 运算符?
背景:
我一直在研究如何使用 dart 代码使用 Map 传递函数。然而,我现在很难过。在使用空安全时使用 DartPad 时,我从以下代码中得到了一个意外的空值:
DartPad 控制台如下图所示:
问题:
我认为答案很容易,但我已经为此苦苦挣扎了一段时间。我的问题是:
我只希望,“这种水果尝起来像紫色!” 已在控制台中打印,所以我必须在这里遗漏一些东西。我是从地图中正确传递这个函数,还是有一种更安全的传递方式?
我想知道为什么在调用 exec() 函数时必须使用 bang 运算符。由于我已经定义了 fruits 映射包含 <String, Function>,编译器会理解它必须存在。我错过了什么?
再次,提前感谢您的任何建议,我们非常感谢社区接受。
更新:
我使用以下代码删除了 bang 运算符,并在下面的答案中给出了更正:
flutter - 如何使用 dart null-safety 对可能包含空值的列表进行排序
我有一个可能包含空值的字符串列表,如何对该列表进行排序?
我正在使用Flutter beta 通道,因此检查了null 安全性。这是我到目前为止所拥有的:
我如何得到这个结果:
flutter - 尽管遵循官方说明,但无法在 Flutter beta 中运行混合版本程序
我有一个想要开发成 Web 应用程序的现有项目,所以我切换到了 Flutter beta 通道。由于我还打算稍后重构我的代码以实现 null 安全性,因此我开始升级尽可能多的包依赖项,这些依赖项与 null 安全修订版可用。现在我的项目必须是一个混合版本的程序。
我遵循了官方的Migrating incrementally 和 Testing or running mixed-version programs说明,但我的 IDE (IntelliJ) 仍然充满了 Dart Analysis 空安全错误,并且我的项目由于相同的错误而无法构建。(我已经使缓存无效并重新启动了 IntelliJ,但没有效果。)
我已将 pubspec.yaml 中的最小 SDK 约束设置为2.12.0-0
;在迁移的这一点上,我已添加// @dart=2.9
到所有我不想考虑进行 null 安全分析的 Dart 文件的顶部,包括 main.dart;我正在使用该flutter run --no-sound-null-safety
命令。
有人可以推荐如何将我的项目作为混合版本程序运行吗?
flutter - 实现启用空安全的类会导致编译错误
我实现的一堆没有空安全性的类(用于模拟目的)现在有编译错误。举个例子:
这会引发错误:
模拟 Firestore 做了类似的事情:
这会产生以下错误:
我怎样才能解决这个问题?
flutter - 如何将 Null 断言运算符与实例字段一起使用
如果对象的字段可以为空,我无法理解如何键入提升对象的字段。假设我有以下 Comment 类并尝试访问其一个可为空的字段:
Dart 编译器会给我一个错误,因为我试图将一个可为空的变量分配给一个不可为空的变量。根据我从研究这个主题中收集到的信息,不可能使用实例变量进行类型提升,因为可以修改实例变量,这会破坏声音的空安全性。我已经看到在这些情况下使用了 Null 断言运算符 (!.),但它似乎不适用于字段,只能用于方法。
使用 dart null-safety,我应该如何分配一个可为空的字段,例如 String?到一个不可为空的变量(字符串)。为了同样的效果,我应该如何将一个可为空的字段传递给一个需要非空参数的函数。
flutter - 失败的`assert`不会在具有空安全性的飞镖中抛出`AssertionError`,有什么解决方法吗?
一旦我开始过渡到null-safety
我就遇到了这个问题:
运行下面的测试
输出以下日志
请注意,尝试使用会_AssertionError
输出错误
名称“_AssertionError”未定义,因此不能在“is”表达式中使用。尝试将名称更改为现有类型的名称,或创建名称为“_AssertionError”的类型。
请避免回答you are not supposed to catch errors
下面的代码纯粹是示范性
的,我在编写测试时遇到了问题,而 expect(fun(), throwsA(AssertionError)); 已包含在代码示例中,它不适合我的用例
这不是错误,而是预期的行为,请参阅问题 45191
你不应该期望
assert(false)
抛出一个运行时类型为 的对象AssertionError
,它只能保证抛出一个可类型化的对象(即运行时类型为 的子类型的对象AssertionError
),这可能是测试expect(type, AssertionError);
失败的原因。
下面是我的医生和我的 pubspec