Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics Dart泛型-类型不是子类型_Generics_Dart_Subtype - Fatal编程技术网

Generics Dart泛型-类型不是子类型

Generics Dart泛型-类型不是子类型,generics,dart,subtype,Generics,Dart,Subtype,我从Dart泛型函数中得到一个运行时错误: Widget card = widget.cardBuilder(item); 由此产生: type '(Contact) => Widget' is not a subtype of type '(DeletableItem) => Widget' Contact类定义为 class Contact implements DeletableItem { 然后我有一个方法: class UndoableListView<T

我从Dart泛型函数中得到一个运行时错误:

 Widget card = widget.cardBuilder(item);
由此产生:

 type '(Contact) => Widget' is not a subtype of type '(DeletableItem) => Widget'
Contact类定义为

class Contact
implements DeletableItem
{
然后我有一个方法:

 class UndoableListView<T extends DeletableItem>
 {
      List<T> children;
      final Widget Function(T item) cardBuilder;
类UndoableListView
{
列出儿童名单;
最终小部件功能(T项)cardBuilder;
这就是运行时错误发生的地方

 Widget buildItem(BuildContext context, int index) {
 T item = children[index];
 Widget card = widget.cardBuilder(item);   <<<<< error thrown here.
Widget buildItem(BuildContext上下文,int索引){
T项=子项[索引];

Widget card=Widget.cardBuilder(item);问题不是
Contact
没有实现
DeletableItem
,而是整个函数本身具有不同的签名,因为
(Contact)=>Widget
无法转换为
(DeletableItem)=>Widget
。如果看不到更多的代码,就很难提出修复方案。您能否显示
buildItem
正在使用的上下文?代码是从一个相当大的应用程序中提取的。目的是将可删除项的列表传递到列表中,并让列表回调生成器从该项生成一张卡片。我对我的方法感到困惑如果触点类型为Deleteable,则无法强制转换t?