Как управлять потоком List объектов во Flutter? - PullRequest
0 голосов
/ 13 мая 2019

Я несколько дней балуюсь флаттером и пытаюсь создать простое приложение ToDo, как учебный проект.Я пытаюсь реализовать что-то вроде BLoC.Список виджетов ListItem создается с помощью ListView.builder, обернутого в StreamBuilder.Я реализовал StreamController '<' List '<' 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.Я пытался не использовать какие-либо внешние пакеты, так как я просто хочу изучить основы.

1 Ответ

1 голос
/ 13 мая 2019

Для добавления и удаления элементов из списка нет ничего плохого в восстановлении всего списка (так оно и должно работать).

Но для постоянного обновления элементов в списке вы можете иметь подпотокдля каждого элемента обновлять только этот элемент при его изменении.

...