函数定义中的可选参数及其使用语法
Optional parameter in function definition and its usage syntax
这里我定义了一个带有可选命名参数的方法定义。
class PostBuilder extends StatefulWidget {
final Future<List<Submission>> Function({String? next}) postFetcher;
...
...
}
我可以像下面那样调用该函数。
class _PostBuilderState extends State<PostBuilder> {
...
...
_fetch() async {
var posts = await widget.postFetcher();
// or
var posts = await widget.postFetcher(next: _items.getLast()?.name);
}
但不幸的是,我不知道如何正确使用它,也不知道正确的语法。
PostBuilder((next) => getPosts(next))
这是编译器抛出的语法错误
error: The argument type 'Future<List<Submission>> Function(dynamic)' can't be assigned to the parameter type 'Future<List<Submission>> Function({String? next})'. (argument_type_not_assignable)
postFetcher
采用命名参数。如果你想给它分配一个匿名函数,那个匿名函数也必须有一个命名参数。匿名函数的语法与命名函数相同(匿名函数的类型通常被省略,因为它们可以被推断)。因此你想要:
PostBuilder(({next}) => getPosts(next))
这里我定义了一个带有可选命名参数的方法定义。
class PostBuilder extends StatefulWidget {
final Future<List<Submission>> Function({String? next}) postFetcher;
...
...
}
我可以像下面那样调用该函数。
class _PostBuilderState extends State<PostBuilder> {
...
...
_fetch() async {
var posts = await widget.postFetcher();
// or
var posts = await widget.postFetcher(next: _items.getLast()?.name);
}
但不幸的是,我不知道如何正确使用它,也不知道正确的语法。
PostBuilder((next) => getPosts(next))
这是编译器抛出的语法错误
error: The argument type 'Future<List<Submission>> Function(dynamic)' can't be assigned to the parameter type 'Future<List<Submission>> Function({String? next})'. (argument_type_not_assignable)
postFetcher
采用命名参数。如果你想给它分配一个匿名函数,那个匿名函数也必须有一个命名参数。匿名函数的语法与命名函数相同(匿名函数的类型通常被省略,因为它们可以被推断)。因此你想要:
PostBuilder(({next}) => getPosts(next))