无需使用StreamBuilder即可从Stream类获取数据

问题描述 投票:0回答:1

我想不使用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

Note在loadMoreItems()内部,我想在不使用StreamBuilder的情况下从getXtraPersons获取数据。谢谢你,非常感谢。

flutter dart snapshot
1个回答
1
投票

感谢@pskink,此问题已解决,并且使用下面的解决方案代码将代码最小化。

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

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

码头here和一些教程here

© www.soinside.com 2019 - 2024. All rights reserved.