将RefreshIndicator与StreamBuilder和Future一起使用

时间:2019-06-02 21:17:30

标签: flutter dart

我正在尝试创建可以通过使用RefreshIndicator刷新的项目列表。我已经使用Stream创建了Future,并向其中添加了StreamBuilder用户界面。我还将Future呼叫附加到RefreshIndicator。由于某些原因,当我进行刷新时,UI不会更新。我认为这与我如何设置Stream和Future有关。有人可以看一下并让我知道我做错了什么吗?预先感谢!

这是用户界面

class EntityList extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var appProvider = Provider.of<AppProvider>(context);
    var opsProvider = Provider.of<OperationsProvider>(context);

    return StreamBuilder(
      stream: opsProvider.getEntitiesStream(),
      builder: (BuildContext context, AsyncSnapshot snapshot) {
        return snapshot.hasData ? RefreshIndicator(
          onRefresh: () => opsProvider.getEntities(),
          child: Container(
            height: double.maxFinite,
            child: ListView.builder(
              itemCount: snapshot.data['content'].length,
              itemBuilder: (BuildContext context, int index) {
                ......
              }
            )
          ),
        ) : Center(child: CircularProgressIndicator());
      },
    );
  }
}

这是Provider类:

class OperationsProvider extends ChangeNotifier {
  Future getEntities() async {
    return await ApiService.get(Config.kpis + 'dashboard?page=0&size=15');
  }

  Stream getEntitiesStream() async* {
    yield await this.getEntities();
  }
}

0 个答案:

没有答案