oop - 提供对事件处理程序中实例的访问

标签 oop dart

目前,我正在尝试学习 dart 语言,但遇到了一个问题。首先,一些代码。 _clickHandler 和 _constructNode 是同一类的方法

  EventListener _clickHandler = (Event e){
    this.setActive(e.currentTarget);
  };

  /* Render methods */

  Element _constructNode(Node node){
      DivElement nodeContainer = new DivElement();
      nodeContainer.id = "node-${node.id.toString()}";
      nodeContainer.classes.add("node");


      SpanElement nodeTitle = new SpanElement();
      nodeTitle.text = node.value;
      nodeTitle.addEventListener('click', this._clickHandler);

      nodeContainer.append(nodeTitle);

      return nodeContainer;
  }

因此,_clickHandler 在“this”处中断:

receiver 'this' is not in scope

如何在事件处理程序中使用“this”指针?

最佳答案

我想删除 =; (最后)足以使您的代码正常工作。

EventListener _clickHandler(Event e){
  this.setActive(e.currentTarget);
}

您将_clickHandler设置为引用闭包的字段,并且在闭包中没有this。将其更改为方法将使其按预期工作。

关于oop - 提供对事件处理程序中实例的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26100722/

相关文章:

c# - WinRT 中字段的正确命名约定是什么

oop - 有没有办法为具有私有(private)成员的 VBA 类编写相等性测试,而不暴露这些私有(private)成员存在的知识?

Map 中的 Flutter 设置属性导致 UnsupportedError (Unsupported operation : read-only)

flutter - StateLess小部件中的Flutter ListView

javascript - DartObject 在传递到 JsObject.callMethod 时未展开

ios - 尝试为 iOS 构建 flutter 应用程序时出现问题

java - 使用oop java计算两点之间的线长

python - 在子类型中使用额外的构造函数参数违反了 LSP 原则

python - __dict__ 对于不显示 @property 属性的对象

flutter - 单击下拉菜单项后如何显示自定义值