错误:无法将参数类型“ ..”分配给参数类型“ ..”

时间:2019-10-15 11:21:52

标签: 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)

1 个答案:

答案 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;
  ...
}