Flutter:从下一页返回运行功能后刷新页面

问题描述

我有第一页包含在初始语句中执行的功能,该功能从服务器获取数据并在此页中使用了该数据, 当我导航到第二屏幕然后是第三屏幕时,通过函数获取的数据会发生变化,因此我想在返回首页再次获取新数据时再次执行该函数

第一页中的功能

void getUserStatus() async {
    SharedPreferences preferences = await SharedPreferences.getInstance();
    setState(() {
      username = preferences.getString('username');
      userId = preferences.getString('logined_id');
      lang = preferences.getString('lang');
    });
    var url =
        "http://xxxx/api/controller/users/status_user.PHP?username=$username";
    var response = await http.get(url);
    var data = jsonDecode(response.body);
    setState(() {
      savedCourseId = data['m_id'];
      savedDayId = int.parse(data['d_id']);
    });
  }
  @override
  void initState() {
    getUserStatus();

    super.initState();
  }

解决方法

因此,您所要做的就是在您调用屏幕2的任何地方使用这些

await Navigator.push(context,MaterialPageRoute(builder: (_)=> YourScreen2()));
await getUserStatus();

这将告诉您一些数据即将到来,我们必须等到您返回此处后再使用,您才能使用这些数据

也可以尝试从屏幕上获取其他数据 如果您需要更多帮助,可以here

,

使用异步/等待模式导航到第二个屏幕。

_navigateToNextPage(BuildContext context) async {
// Navigator.push returns a Future that completes after calling
// Navigator.pop on the 2nd screen Screen.
await Navigator.push(context,MaterialPageRoute(builder: (context) => SecondScreen()));

// After the 2nd screen returns.
getUserStatus();
}