Получить данные из класса Stream без использования StreamBuilder - PullRequest
0 голосов
/ 10 марта 2020

Я хочу получить данные из функции Stream без использования StreamBuilder. Как мне этого добиться? Ниже приведена функция, из которой я хочу получить данные.

Stream<List<Person>> watchAllPersons(limit, offset) => select(persons).watch();

Ниже приведена функция, из которой я хочу получить данные из watchAllPersons() без использования StreamBuilder.

var xtraPersonsData;

int limit = 12;
int offset = 5;

Future loadMoreItems() {
    final personDao = Provider.of<PersonDao>(context);

    var getXtraPersons = personDao.watchAllPersons(limit, offset);

    StreamBuilder(
      stream: getXtraPersons, // a Stream<int> or null
      builder: (BuildContext context, AsyncSnapshot snapshot) {
        var xtraPersons = snapshot.data ?? List();
        setState(() {
          xtraPersonsData = xtraPersons;
        });
        debugPrint('persons: ' + persons.toString());
        // return;
      },
    );
  }

I ' Обновив переменную xtraPersonsData новыми данными внутри StreamBuilder выше. Это не работает, потому что xtraPersonsData возвращает null.

Примечание внутри loadMoreItems() Я хотел бы получить данные из getXtraPersons без использования StreamBuilder.

1 Ответ

2 голосов
/ 10 марта 2020

Благодаря @pskink проблема была решена, и код также минимизируется с использованием приведенного ниже кода для решения.

personDao.watchAllPersons(limit, offset).listen(onData);

void onData(List<PersonWithProduct> event) {
    print(event);
  }

Документы здесь и некоторые учебные пособия здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...