让一个类实现List有几种方法:
import 'dart:collection';
class MyCustomList<E> extends ListBase<E> {
  final List<E> l = [];
  MyCustomList();
  void set length(int newLength) { l.length = newLength; }
  int get length => l.length;
  E operator [](int index) => l[index];
  void operator []=(int index, E value) { l[index] = value; }
  // your custom methods
}
import 'dart:collection';
class MyCustomList<E> extends Base with ListMixin<E> {
  final List<E> l = [];
  MyCustomList();
  void set length(int newLength) { l.length = newLength; }
  int get length => l.length;
  E operator [](int index) => l[index];
  void operator []=(int index, E value) { l[index] = value; }
  // your custom methods
}
import 'package:quiver/collection.dart';
class MyCustomList<E> extends DelegatingList<E> {
  final List<E> _l = [];
  List<E> get delegate => _l;
  // your custom methods
}
根据您的代码,这些选项中的每一个都有其优势。如果您包装/委托现有列表,则应使用最后一个选项。否则,根据您的类型层次结构使用前两个选项之一(mixin 允许扩展其他对象)。