flutter - 将 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();
}
}
解决方案
推荐阅读
- c - 利用linux、scanf和读取权限
- javascript - jQuery getJSON 的 Javascript 返回结果
- python - 如何使用 np.convolve() 在 Python 中创建 Voigt 函数?
- reactjs - 如何在配置文件中使用 NextJS 重定向
- regex - PowerShell 将多行与正则表达式模式匹配
- winapi - boost asio arduino 错误:boost::wrapexcept
- docker - 将配置文件传递给 Docker 容器中的 mosquitto
- matlab - 在matlab中读取具有重复数据块的文本文件
- java - Android Studio - (java.lang.NullPointerException:尝试调用虚拟方法'com.google.firebase.database.ChildEventListener')
- python - Selenium 元素中没有肯定包含文本的文本