flutter Dart:如何将函数作为参数传递

uinbv5nw  于 2023-01-18  发布在  Flutter
关注(0)|答案(1)|浏览(199)

我想从一个函数调用另一个函数,这是我的代码:

void fooA () {
    //do something
  }
  
  void fooB (fooC) {
    fooC();
  }
  
  fooB (fooA);

为什么不执行fooA?

uemypmqf

uemypmqf1#

您提供的代码具有以下功能:

void fooA () {
  print('hi');
}

void fooB (fooC) {
  fooC();
}

main() {
  fooB (fooA);
}

输出:

hi

但是,最好完全键入函数参数,如下所示:

void fooA() {
  print('hi');
}

void fooB(void Function() fooC) {
  fooC();
}

main() {
  fooB(fooA);
}

注意完整描述的类型声明void Function() fooC,这样做可以使编译器使用静态类型检查来确保传入的函数具有正确的参数和返回类型。
参考文献

  • PREFER使用函数类型语法作为参数。
  • 内联函数类型优先于typedef。
  • Dart language specification,第20.5节,"20.5函数类型"。

相关问题