在不使用 StreamBuilder 的情况下从 Stream class 获取数据

Get data from Stream class without using StreamBuilder

我想在不使用 StreamBuilder 的情况下从 Stream 函数获取数据。我如何实现这一目标?下面是我想从中获取数据的函数。

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

下面是我想在不使用 StreamBuilder 的情况下从 watchAllPersons() 获取数据的函数。

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;
      },
    );
  }

我正在用上面 StreamBuilder 中的新数据更新 xtraPersonsData 变量。这不起作用,因为 xtraPersonsData 正在返回 null

注意 loadMoreItems() 中的 我想在不使用 StreamBuilder 的情况下从 getXtraPersons 获取数据。

感谢@pskink,问题已经解决,代码正在最小化,同时使用下面的代码作为解决方案。

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

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

文档here and some tutorials here.