dart - 错误:不能将参数类型“..”分配给参数类型“..”
问题描述
我正在尝试调用一个接受另一个函数作为参数的函数。
当我尝试使用泛型进行概括时,出现以下错误
错误:无法将参数类型“..”分配给参数类型“..”。
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)
解决方案
我有一个类似的问题,虽然我的例子要简单得多:
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()”。 飞镖(argument_type_not_assignable)
将 void 类型添加到我的函数属性中就可以了,尽管这需要添加括号:
class Answer extends StatelessWidget {
final void Function() selectHandler;
...
}
推荐阅读
- javascript - 使用 CSS 动画数字增量(使用关键帧动画 CSS @property 整数)
- android - RecyclerView(Kotlin):在带有导航栏的片段中:没有附加适配器跳过布局
- google-drive-api - 使用 gspread 库检查工作簿是否存在?
- mysql - Laravel leftJoin 查询获取重复/缺失记录
- python - 保存 matplotlib 图形而没有 rgb 损失
- c# - 合并 k 个排序列表不适用于负值 C#
- python - 有没有办法将映射与条件语句结合起来?
- flutter - Flutter Firebase 实时数据库问题
- r - 表格内的ggplot图
- mongodb - 允许不同组合的 CompoundIndex