提问人:Dennis 提问时间:10/10/2023 更新时间:10/10/2023 访问量:28
调用函数引用时未使用命名参数时出错
Error when not using named parameters when calling a function reference
问:
我收到以下错误: 参数类型“void Function(String?)”不能分配给参数类型“void Function()?” 当我在我的代码中这样做时:
void openNoteBox(String? docID) {}
...
***onPressed: openNoteBox //Error here***
...
onPressed: () => openNoteBox(docID), // it works here
...
This fixed it:
void openNoteBox({String? docID}) {}
...
***onPressed: openNoteBox, //error is gone here***
...
onPressed: () => openNoteBox(docID: docID),
...
但为什么前一个不起作用呢?
答:
1赞
Dhafin Rayhan
10/10/2023
#1
在第一个代码中,您定义了一个必需的位置参数。若要定义可选的位置参数,请使用以下语法:
void openNoteBox([String? docID]) {}
从有关可选位置参数的文档中:
将一组函数参数包装起来,将它们标记为可选的位置参数。
[]
在第二个代码中,您定义了一个命名参数,默认情况下,该参数是可选的。从文档中:
命名参数是可选的,除非它们被显式标记为 。
required
另请注意,不能同时定义命名参数和可选位置参数。从参数文档中:
一个函数可以具有任意数量的必需位置参数。这些参数后面可以跟着命名参数或可选的位置参数(但不能同时跟这两个参数)。
评论