如何在 polymer-dart 行为混合中设置 属性?

How do I set a property in a polymer-dart behavior mixin?

以下示例取自聚合物飞镖documentation on behaviors。它利用了toggleHighlight中的方法set。我不明白这是怎么可能的,因为 set 没有在任何地方定义。

@behavior
abstract class HighlightBehavior {
  @Property(notify: true, observer: 'highlightChanged')
  bool isHighlighted = false;

  static created(instance) {
    print('Highlighting for $instance enabled!');
  }

  @Listen('click')
  toggleHighlight(_, __) {
    set('isHighlighted', !isHighlighted);
  },

  @reflectable
  highlightChanged(bool newValue, _) {
    toggleClass('highlighted', newValue);
  }
}

如何将聚合物 属性 设置为触发所有使数据绑定起作用的功能的行为?

行为是否应该实现 PolymerBase 才能使用 set 方法?快速测试表明,当行为实现 PolymerBase 时,set 起作用。但这不是它的记录方式。我可以通过实施 PolymerBase 来引起一些不需要的副作用吗?

HighlightBehavior是抽象的,所以通过继承得到真实的实例。来自文档

class MyElement extends PolymerElement with HighlightBehavior {
  MyElement.created() : super.created();
}

PolymerElement 扩展 PolymerBase 提供 set 方法。