7

私は数日間フラッターに手を出しており、学習プロジェクトとして簡単な 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 に新しいエントリを追加する、より良いアプローチがあると確信しています。基本を学びたいだけなので、外部パッケージを使用しないようにしました。

4

1 に答える 1