Rest 仅在程序运行时运行该函数一次
我使用RESTAPI创建了一个函数,使用他的IDRest 仅在程序运行时运行该函数一次,rest,api,flutter,dart,state,Rest,Api,Flutter,Dart,State,我使用RESTAPI创建了一个函数,使用他的ID获取用户数据 我在UI中的代码: SharedPreferences sharedPreferences; UserApiService userApiService; @override void initState() { super.initState(); getUserData(); userApiService = UserApiService(); } Future<User&
获取用户数据
我在UI中的代码:
SharedPreferences sharedPreferences;
UserApiService userApiService;
@override
void initState() {
super.initState();
getUserData();
userApiService = UserApiService();
}
Future<User> getUserData() async {
sharedPreferences = await SharedPreferences.getInstance();
int id = sharedPreferences.getInt('id');
return userApiService.getUser(id);
}
我有一个问题,每次我进入请求完成的页面时,函数都会被重新加载,并且信息会再次从服务器检索
如何使这些数据只从我的RESTAPI下载一次,然后平滑显示,而无需向数据库再次请求这些数据
我知道我必须使用状态管理,但我不知道如何使用状态管理
谢谢您的回答:)来自
原因:
每次发布重建时都会调用FutureBuilder状态的didUpdateWidget。此函数用于检查旧的future对象是否与新对象不同,如果是,则重新定义FutureBuilder
解决方案:
因此,不要有:
FutureBuilder(
future: getUserData(),
....
我们应该有:
Future _future;
@override
initState() {
super.initState();
_future = getUserData();
}
然后
FutureBuilder(
future: _future,
你是说你想让未来在整个应用程序生命周期内启动一次?还是只启动整个页面生命周期?整个应用程序//所以下面的答案不会解决你的问题,对吧?还是重新加载我的页面谢谢,但我不知道为什么,但它仍然会在单击后重新加载我的页面。如果我的UI或方法getUserData()
一切正常,你能确定吗?
Future _future;
@override
initState() {
super.initState();
_future = getUserData();
}
FutureBuilder(
future: _future,