首页 > 解决方案 > 将 RefreshIndicator 与 StreamBuilder 和 Future 一起使用

问题描述

我正在尝试创建一个项目列表,我可以使用RefreshIndicator我创建了一个Stream使用 aFuture并将 a 添加StreamBuilder到 UI 来刷新这些项目。我还将 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());
      },
    );
  }
}

这是提供者类:

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

标签: flutterdart

解决方案


推荐阅读