python - 使用rest API时数据在颤动中消失
问题描述
当我使用未来的构建器从后端获取底部导航栏的第一个选项卡上的数据时,当我更改为第二个选项卡底部导航栏时,它会消失。
为什么会这样?
我该如何解决?
上面是我更改一次底部选项卡并再次返回第三个选项卡时的页面...
每次都会发生这种情况...
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'dart:async';
class newExample extends StatefulWidget {
@override
newExampleState createState() => newExampleState();
}
class newExampleState extends State<newExample> {
var userid;
Future<http.Request> getData() async
{
var client = new http.Client();
final response = await client.get('http://182.0.0.102:5000/user_detail');
final responseJson = json.decode(response.body);
dynamic user_id = responseJson['user_id'];
userid = user_id;
print(responseJson);
client.close();
// return responseJson;
}
@override
void initState() {
super.initState();
getData();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: ListView.builder(
itemCount: userid.length,
itemBuilder: (BuildContext context, int index){
return _buildCards(context, index);
},
),
),
);
}
Widget _buildCards(BuildContext context, int index){
return Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child:
// Text('hi'),
Text('${userid[index]}'),
)
);
}
}
解决方案
我认为它正在发生,因为你打电话getData()
,initState
它只会工作一次。尝试像这样调用你的函数:
@override
void initState() {
SchedulerBinding.instance.addPostFrameCallback((_) {
getData().then((response) {
if (mounted)
setState(() {
data= response?.something;
});
});
});
super.initState();
}
阅读 SchedulerBinding: https ://api.flutter.dev/flutter/scheduler/SchedulerBinding/addPostFrameCallback.html
推荐阅读
- batch-file - 当我在我的 DBML 文件上运行 msxsl.exe 时,它会引入回车符,这会弄乱最后的 SQLMetal.exe 步骤
- sql - 我缺少什么加入条件
- oracle - Toad:自动在两个 Oracle 表之间进行每日传输?
- javascript - 为什么 useEffect 不再运行我的 API 提取并将结果保存到状态?
- zend-framework - LUCENE FULLTEXT INDEX (Orientdb / Lucene) 上的十进制范围搜索查询
- javascript - 在 NodeJS 中过滤和排序文档数组
- sql - 提取 XML 数据并输出到文件以保存在文件夹中
- sql - WHEN 语句中具有多个 LIKE 和 NOT LIKE 的 SQL 查询
- c# - 无法使用c#运行命令
- html - 打印时如何在 React 中操作主题?