我最近看到"Expando"这个词和Dart一起使用.听起来很有趣.API并没有给我提供多少线索.

举一两个例子可能会很有帮助!

(不确定这是否相关,但我最渴望的是一种将方法(Getter)和/或变量添加到类中的方法.希望这能成为解决这个问题的关键.(提示:我现在正在使用Nosuchmethod方法,希望能够返回未找到的方法的值.)

提前谢谢你,

_斯瓦米伊

推荐答案

Expandos允许您将对象与其他对象关联.一个非常有用的例子是HTML DOM元素,它本身不能被子类化.让我们制作一个顶级expando,向元素添加一些功能——在本例中,是typedef语句中给出的函数签名:

typedef CustomFunction(int foo, String bar);

Expando<CustomFunction> domFunctionExpando = new Expando<CustomFunction>();

现在要使用它,请执行以下操作:

main(){
   // Assumes dart:html is imported
   final myElement = new DivElement();

   // Use the expando on our DOM element.
   domFunctionExpando[myElement] = someFunc;

   // Now that we've "attached" the function to our object,
   // we can call it like so:
   domFunctionExpando[myElement](42, 'expandos are cool');
}

void someFunc(int foo, String bar){
  print('Hello. $foo $bar');
}

Dart相关问答推荐

如何扩展 Dart 套接字 BroadcastStream 缓冲区大小为 1024 字节?

在 Flutter 中以间隔自动获取 API 数据

读取有状态(Stateful)小部件的状态

如何为屏幕设置不同的主题?

在 Flutter 中将 Widget 放在 ListView 之上

Flutter|Dart 创建匿名类

如何防止多行文本小部件放置在行中时被剪裁?

在 Dart/Flutter 中创建 DateTime 对象时如何指定 TimeZone?

Flutter - 可以在没有 Firebase 的情况下使用 Google 登录吗?

AnimatedContainer 可以为其高度设置动画吗?

使用 Google Dart 进行数据库查询?

Firebase Crashlytics 崩溃未报告给 Flutter 中的 Firebase 控制台

Flitter中的谷歌 map 没有出现

如何在 Dart 中监听自定义事件?

Flutter-当文本字段有焦点时隐藏提示文本

将Flutter的 PageView 与屏幕左侧对齐

是什么使它成为 Dart 中的固定长度列表?

如何创建类型别名

如何使用 Dart 列出目录的内容?

Null aware函数调用运算符