私は数日間フラッターに手を出しており、学習プロジェクトとして簡単な ToDo アプリを作ろうとしています。BLoC のようなものを実装しようとしています。ListItem ウィジェットのリストは、StreamBuilder にラップされた ListView.builder で作成されます。StreamController'<'List'<'Note'>'>' を実装しました。リストに新しい Note を追加するたびに、それを一時リストに追加し、StreamSink を介してリストを渡すことができました。ただし、アイテムが追加されるたびに ListView 全体が再構築されると思われます。
ストリームを個別に理解するために、少しずつ学習しようとしています。これを実装するより良い方法は何ですか? Stream のような単純な型の例しか見つけることができませんが、Lists のような複雑な型の例は見つかりません。
class Note {
String title, note;
Note(this.title, this.note);
}
class ListBloc {
final notes = <Note>[];
final _controller = StreamController<List<Note>>.broadcast();
get controllerOut => _controller.stream.asBroadcastStream();
get controllerIn => _controller.sink;
addNewNote(Note note) {
notes.add(note);
controllerIn.add(notes);
}
void dispose() {
_controller.close();
}
}
ListView に新しいエントリを追加する、より良いアプローチがあると確信しています。基本を学びたいだけなので、外部パッケージを使用しないようにしました。