调用函数引用时未使用命名参数时出错

Error when not using named parameters when calling a function reference

提问人:Dennis 提问时间:10/10/2023 更新时间:10/10/2023 访问量:28

问:

我收到以下错误: 参数类型“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),
...

但为什么前一个不起作用呢?

flutter 函数 dart 括号 named-parameters

评论


答:

1赞 Dhafin Rayhan 10/10/2023 #1

在第一个代码中,您定义了一个必需的位置参数。若要定义可选的位置参数,请使用以下语法:

void openNoteBox([String? docID]) {}

有关可选位置参数的文档中:

将一组函数参数包装起来,将它们标记为可选的位置参数。[]

在第二个代码中,您定义了一个命名参数,默认情况下,该参数是可选的。从文档中:

命名参数是可选的,除非它们被显式标记为 。required

另请注意,不能同时定义命名参数和可选位置参数。从参数文档中:

一个函数可以具有任意数量的必需位置参数。这些参数后面可以跟着命名参数或可选的位置参数(但不能同时跟这两个参数)。