Dartlang:如何实现回调方法

5

我在一个库中有一个类,其中有一个名为'onMessage'的方法,在事件发生时执行。当onMessage执行时需要调用主应用程序中一个类的'回调'方法。 我原以为这将通过构造函数完成,但我无法弄清它是如何实现的。

编辑

在此版本中,当我尝试创建WebsocketService的实例“wss”时,main.dart中会收到一个警告。

 // in library class - no warnings

 Object returnResults;

 WebsocketService(Object callback()) {
   returnResults = callback;
 }


 void onMessage(data) {
   var json = JSON.decode(data);
   var echoFromServer = json['response'];
   print("Received message: $echoFromServer");
   returnResults(echoFromServer); // declared 'incoming' in main.dart
 }




 // +++  in main.dart ++++++++
  WebsocketService wss;

  class TestAsynchWS {

    TestAsynchWS() {  // *** Dart Editor warning here
    // 0 positional arguments expected but 1 found
      wss = new WebsocketService(incoming);
    }

 void incoming(echoFromServer) {
 // code
 }
1个回答

4
假设库中可以设置returnResults,您可以使用以下方法:
returnResults = incoming;

是这样的吗?在 WebsocketService 中有 var returnResults;,而在 main.dart 中有 wss.returnResults = incoming; - grohjy
这个答案很好用,你测试过了吗?你应该从WebsocketService库中删除object returnResults;Object callback()returnResults = callback;。同时,你还应该从main.dart中删除incoming(wss = new...行)。在你添加了我之前评论中的代码后,一切都应该正常工作。 - grohjy
回想起来,这显然是个错误。叹气。在做出更改后记得“全部保存”将有助于防止我的血皮质醇水平上升。 - Nate Lockwood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接