飞镖访问作为对象。如何调用它们?

时间:2019-03-23 17:44:54

标签: function object dart

我正在使用对象数组,而对象之一是一个函数。我尝试以正常方式调用它,但似乎不起作用。我也尝试过强制类型转换,无论如何也没用。

List<Object> list = ['some other type of data', (String p) { /* do something */}];

list[1]('some string'); // Expression doesn't evaluate to a function

我需要以某种方式调用列表索引1的函数。

3 个答案:

答案 0 :(得分:1)

这可能会做您想要的

(list[1] as void Function(String))('some string'); 

或者只是

(list[1] as Function)('some string');

答案 1 :(得分:0)

我刚刚找到了解决方案。我已经尝试过以Java方式进行类型转换,但似乎在dart上不起作用。

这就是我所做的

List<Object> list = ['some other type of data', (String p) { /* do something */}];
Function f = list[1];
f('some string'); // This worked!

答案 2 :(得分:0)

您还可以像这样将列表类型更改为动态:

List<dynamic> list = ['some other type of data', (String p){ print('hi-$p');}];

list[1]('dart'); //Output is: hi-dart