【发布时间】:2023-02-25 17:40:12
【问题描述】:
我的问题是,当我进入应用程序的打开主页时,它将从 api 加载数据,我导航到其他页面,然后当我回到主页时,它再次加载数据。选项卡中的相同问题。我在一个页面中有 3 个选项卡,每次加载数据时,我只想加载一次数据,但是当数据库中的数据更新时,我想显示更改,这就是我使用流生成器创建列表的原因。
我正在使用流生成器。
以下是我的代码:
late Stream<AdminPostModel> stream = Stream.periodic(Duration(seconds: 3))
.asyncMap((event) async => await getCurrentAdminPost());
Future<AdminPostModel> getCurrentAdminPost() async {
var url = "https:myURL.php?id=$getUserId&pageNo=$currentPage";
var response = await http.get(Uri.parse(url));
var jsondata = jsonDecode(response.body.toString());
if (response.statusCode == 200) {
return AdminPostModel.fromJson(jsondata);
}
else {
return AdminPostModel.fromJson(jsondata);
}
}
用于制作数据列表:
Expanded(
child: StreamBuilder<AdminPostModel>(
stream: stream,
builder: (context, snapshot) {
if (snapshot.hasData) {
return ....Code
【问题讨论】:
-
我建议使用一些状态管理解决方案而不是直接的 streambuilder。这样你就可以在后台请求数据,只有当你有一些变化时才更新 UI。
-
避免重新加载
StreamBuilder,你可以用StreamBuilder包裹整个PageView并将数据传递到每个页面。
标签: flutter