我试图调用一个接受另一个函数作为参数的函数。
当我尝试使用泛型进行概括时,出现以下错误
错误:无法将参数类型“ ..”分配给参数类型“ ..”。
class MyType {}
typedef MyFunctionType = void Function(Function <MyValue extends MyType> (MyValue?, MyValue));
class MyClass <MyValue extends MyType> {
late MyFunctionType myFunc;
MyClass(this.myFunc) {
(observer) => this.newValues(observer.oldValue,observer.oldValue);
}
MyClass <MyValue> _select(MyValue Function(MyValue) selector) {
var observerFunc = (oldValue,newValue) {
};
return MyClass((observer) => this.observe(observerFunc));
}
void observe(MyFunctionType func){
this.myFunc = func;
}
void newValues(MyValue oldValue, MyValue newValue) {
// TODO Add functionality
}
}
以下是错误
error: The argument type 'void Function(dynamic Function<MyValue₀ extends MyType>(MyValue, MyValue))' can't be assigned to the parameter type 'void Function(dynamic Function<MyValue extends MyType>(MyValue, MyValue))'. (argument_type_not_assignable at [dartTry] test/Params2Arguments.dart:16)
答案 0 :(得分:0)
我有一个类似的问题,尽管我的例子要简单得多:
class Answer extends StatelessWidget {
final Function selectHandler;
Answer(this.selectHandler);
@override
Widget build(BuildContext context) {
return Container(
child: RaisedButton(
...
onPressed: selectHandler,
),
);
}
}
分配onPressed
函数的行上的错误是:
不能将参数类型“ Function”分配给参数类型“ void Function()”。 dart(argument_type_not_assignable)
将void类型添加到我的function属性中可以达到目的,尽管这需要添加括号:
class Answer extends StatelessWidget {
final void Function() selectHandler;
...
}