【发布时间】:2021-06-28 21:17:26
【问题描述】:
如何按以下方式添加 getter 和 setter 扩展方法?以下内容不起作用,因为未定义 _foo 并且直接设置为 foo 就像 set foo(val) => foo = val; 一样会创建一个无限循环。
extension on Uri {
String get foo => _foo;
set foo(val) => _foo = val;
}
main() {
var uri = Uri();
uri.foo = 'bar';
}
【问题讨论】:
-
这实际上与 getter/setter 方法没有任何关系。 any 扩展方法会有同样的问题。从根本上说,您的问题是您想将数据成员添加到对象instance,但这不是静态扩展方法可以做到的。您也许可以让您的方法在某个全局
Expando实例上查找this,但请务必阅读有关使用Expando的注意事项。
标签: dart extension-methods getter-setter