これは私がリストの動作を拡張するために出て見つけたものです:
- インポート「ダーツ:コレクション」;
- ListBase
- []とlength getterとsetterを実装しています。
適応されたTweetの例を参照してください。それは、カスタムのツイートメソッドと標準のリストメソッドを使用します。
add/addAllが削除されていることに注意してください。
出力:
[hello, world, hello]
[hello, hello]
[hello, hello]
コード:
import 'dart:collection';
class Tweet {
String message;
Tweet(this.message);
String toString() => message;
}
class Tweets<Tweet> extends ListBase<Tweet> {
List<Tweet> _list;
Tweets() : _list = new List();
void set length(int l) {
this._list.length=l;
}
int get length => _list.length;
Tweet operator [](int index) => _list[index];
void operator []=(int index, Tweet value) {
_list[index]=value;
}
Iterable<Tweet> myFilter(text) => _list.where((Tweet e) => e.message.contains(text));
}
main() {
var t = new Tweet('hello');
var t2 = new Tweet('world');
var tl = new Tweets();
tl.addAll([t, t2]);
tl.add(t);
print(tl);
print(tl.myFilter('hello').toList());
print(tl.where((Tweet e) => e.message.contains('hello')).toList());
}
あなたがこれを行うだけではなく、通常のリストを使用してする必要がある理由はありますか? –
Duplicate ofquestions/16247045/how-do-i-extend-a-list-in-dart –