如何解决具有命名参数的回调函数中的 Dart Null Safety
以下代码在使用 Null Safety 编译时失败,出现以下错误:
参数namedParam
的值不能为null
,因为它的类型,并且没有提供非空的默认值。
void main() {
Foo(callbackWithNamedParam: ({namedParam}) {
print('param=$namedParam');
}).callback();
}
class Foo {
final void Function({required int namedParam}) callbackWithNamedParam;
Foo({required this.callbackWithNamedParam});
void callback() {
callbackWithNamedParam(namedParam: 10);
}
}
在没有 Null Safety 的情况下编译时,代码编译得很好。
DartPad with 编译失败的空安全
DartPad 没有编译良好的空安全
有没有办法解决:
- 无需切换到位置参数
和 - 不使命名参数
nullable
?
解决方法
使您的命名参数 int?
。然后它将接受一个 int 或 null:
final void Function({int? namedParam}) callbackWithNamedParam;
,
添加Randal'的回答。来自Dart's documentation
所以为了解决我的问题,我不得不将 required
添加到匿名函数中
Foo(callbackWithNamedParam: ({required namedParam}) {
^^^^^^^^
print('param=$namedParam');
}).callback();
可以在此 Dartpad
中找到我的工作代码版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。