函数定义中的可选参数及其使用语法

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))