Flutter:从下一页到 运行 函数 return 后刷新页面
Flutter : refresh page after return from next page to run function
我的第一页包含在从服务器获取数据的初始语句中执行的函数,并在此页中使用了这些数据,
当我导航到第二个屏幕然后第三个屏幕时,通过函数获取的数据发生变化,因此我想在 return 到第一页时再次执行该函数以再次获取新数据:
首页功能:
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
使用 async/await 模式导航到第二个屏幕。
_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();
}
我的第一页包含在从服务器获取数据的初始语句中执行的函数,并在此页中使用了这些数据, 当我导航到第二个屏幕然后第三个屏幕时,通过函数获取的数据发生变化,因此我想在 return 到第一页时再次执行该函数以再次获取新数据:
首页功能:
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
使用 async/await 模式导航到第二个屏幕。
_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();
}