如何 return dart 闭包中的函数?

How to return the function in a closure in dart?

例如:

Future<int> _test1() async {
  return Future.delayed(Duration(seconds: 1)).then((value) {
    return 1;
  });
}

void _onTapButton() async {
  await _test1().then((value) {
    print('a');
    if (value == 1) {
      print('return');
      return;
    }
  });

  print('b');
}

当我调用 _onTapButton 时,控制台打印 a return b 不是 a return.

也就是说_test1().then中的return没有return函数_onTapButton.

有什么方法可以让我在 _test1().then 中 return 发挥 _onTapButton 的作用吗?

在你的代码中 then 部分是一个回调,将在你的未来完成时执行,return 是指在这个回调的范围内,而不是你的 _onTapButton 函数.

如果你想等待未来,如果结果为 1,打印 return 和 return from _onTapButton,你可以试试这个:

void _onTapButton() async {
   final value = await _test1();
   print('a');
   if (value == 1) {
      print('return');
      return;
   }
   print('b');
}