如何在flutter(dart)中将异步函数声明为变量?

Jos*_*hiu 4 dart flutter

在flutter中,我们可以将一个函数声明为变量并像这样调用它

MyWidget((){print('HI');});

class MyWidget extends StatelessWidget{
  final Function sayHi;

  MyWidget(this.sayHi);

  @override
  Widget build(BuildContext context) {
    sayHi();
    return ...
  }
}
Run Code Online (Sandbox Code Playgroud)

但是如果sayHi()是异步函数呢?如何将异步函数声明为变量?似乎没有像AsyncFunction. 那么如何实现呢?

hol*_*ola 11

异步函数是普通函数,上面有一些糖。这里,函数变量类型只需要指定它返回一个 Future:

class Example {
  Future<void> Function() asyncFuncVar;
  Future<void> asyncFunc() async => print('Do async stuff...');

  Example() {
    asyncFuncVar = asyncFunc;
    asyncFuncVar().then((_) => print('Hello'));
  }
}

void main() => Example();
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。