Rest 仅在程序运行时运行该函数一次

Rest 仅在程序运行时运行该函数一次,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&

我使用RESTAPI创建了一个函数,使用他的ID
获取用户数据

我在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,