flutter - 如何在颤动中每 x 秒从 api 获取数据?
问题描述
我想每隔 x 秒从 api 获取数据以将数据显示为实时在小部件中,并且我还想在数据更改时为小部件设置动画。我尝试使用 Stream 和 Stream Builder。这是获取实时数据的最佳方式。请帮助我。
这是我的代码。
class Post{
final String title;
Post({this.title});
factory Post.fromJson(Map<String, dynamic> json) {
return Post(
no: json['title']
);
}
}
class PostData {
static String _url="https://jsonplaceholder.typicode.com/posts/1";
static Future browse () async {
http.Response response = await http.get(_url);
Post post= Post.fromJson(json.decode(response.body));
return post;
}
Stream<int> get getLiveData async* {
yield await PostData.browse();
}
StreamBuilder<Post>(
stream: getLiveData,
builder: (context, snapshot) {
return Text(snapshot.data.title)
},
)
解决方案
您应该看一下 Timer.Periodic https://api.flutter.dev/flutter/dart-async/Timer/Timer.periodic.html我将它与 setState 一起使用,但我确信它也可以与 Stream 一起使用.
编辑:像这样,使用 Stream.periodic:
Stream <int> getPeriodicStream() async* {
yield* Stream.periodic(Duration(seconds: 30), (_) {
return PostData.browse();
}).asyncMap((value) async => await value,
);
}
推荐阅读
- python - 如何在Ddjango中将查询集作为单个项目传递?
- splunk - 如何编写 splunk 查询以确保搜索正常工作?
- sql-server - 查询从 Table2 中获取 Supervisor,同时显示 Table1 中的信息
- javascript - JS 事件在 woocommerce 购物车页面上无法正常工作
- flutter - 如何在没有 MaterialPageRoute 的情况下传递参数函数 setState?
- java - Mockito、verify 和 HashMap:参数不同
- mysql - 试图重新排列mysql中的数据
- ms-access - 格式化 MS-Access 图表中的轴标签
- python - 通过 python 在 Azure DevOps 中创建工作项
- javascript - 单击按钮时,使用 nextSiblingElement 标签使我的列表项在页面下方