无法识别在子类型上定义的Dart扩展方法

时间:2019-12-26 13:26:54

标签: flutter dart

我在可比较元素列表上定义了以下扩展方法:

extension ComparableList<T extends Comparable<T>> on List<T> {
  int doSomething() {
    // This is just an example
    return this.first.compareTo(this.last);
  }
}

然后,我尝试在List<num>上使用它。 num的定义是abstract class num implements Comparable<num>,所以我认为应该可以。

class Example<T extends num> {
  final List<T> list;

  Example(this.list) {
    list.doSomething(); // This throws "error: The method 'doSomething' isn't defined for the class 'List'."
  }
}

如果我将扩展方法的定义更改为extension ComparableList<T extends num> on List<T>,则一切正常,但我希望为所有可比较的类定义该方法。

1 个答案:

答案 0 :(得分:1)

更改

extension ComparableList<T extends Comparable<T>> on List<T>

extension ComparableList<T extends Comparable<T>> on List<Comparable<T>>

以便Dart知道类型。