Dart:回调方法未执行

问题描述 投票:0回答:1

在熟悉Dart和回调方法的同时,我尝试在dartpad中运行以下代码。但是,函数 fIn() 并未执行。谁能告诉我为什么吗?


void main() {
int counter = 1;
  
  void secondMethodCallback() {
    print(counter);
    counter++;
    print(counter);
  }
  
  // As a Lambda-Expression its not working; only as "secondMethodCallback"
  firstMethod(counter, () => secondMethodCallback);

}

void firstMethod(int intIn, Function() fIn){
  print("in firstMethod");
  fIn();
}

当我在没有像这样的 Lambda 表达式的情况下传递“secondMethodCallback”时,它会起作用:

  firstMethod(counter, secondMethodCallback);


第二个问题:如果我在firstMethod中写“Function”或“Function()”,似乎没有什么区别。谁能解释一下吗?

第三个问题:是否有可能在第一个方法中操纵“计数器”?

第四个问题:当在firstMethod中执行时,是否可以在fIn中操作“intIn”?

致以最诚挚的问候并非常感谢您的帮助:)

dart callback
1个回答
0
投票
  // As a Lambda-Expression its not working; only as "secondMethodCallback"
  firstMethod(counter, () => secondMethodCallback);

您有一个返回函数对象的 lambda 表达式。你错过了

()
来称呼它:

  // As a Lambda-Expression its not working; only as "secondMethodCallback"
  firstMethod(counter, () => secondMethodCallback());
© www.soinside.com 2019 - 2024. All rights reserved.