我有一个全局函数,我可以从应用程序的几乎所有屏幕调用它。我正在向它传递上下文。我只想知道是否有办法根据传递给函数的上下文刷新调用全局函数的页面?
appResumedPausedLogic(context,[bool isVisitPage]){
SystemChannels.lifecycle.setMessageHandler((msg)async{
if(msg=='AppLifecycleState.resumed' )
{
print("------------------------------------ App Resumed-----------------------------");
var serverConnected= await checkConnectionToServer();
if(globals.globalCameraOpenedStatus==false)
if(serverConnected!=1){
Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => OfflineHomePage()));
}
else{
Navigator.push(context, MaterialPageRoute(builder: (context) => HomePage()));
}
}
if(msg=='AppLifecycleState.paused' ){
if(globals.globalCameraOpenedStatus==false)
locationThreadUpdatedLocation=false;
}
});
}
Run Code Online (Sandbox Code Playgroud)
当应用程序当前恢复时,我的全局功能根据互联网的可用性将用户重定向到离线主页/主页。我希望它刷新当前活动的屏幕。
提前致谢!
Vit*_*avi 35
只是简单的使用
setState(() {});
Run Code Online (Sandbox Code Playgroud)
Sah*_*evs 10
尝试 (context as Element).reassemble();
reassemble 是用于热重载的函数
此外,我认为最好说出您的目标并查看其他解决方案来解决您的问题,因为我认为这种方法不可靠。
编辑:评论中有一些有用的提示。
小智 8
我曾经将此解决方法用于重新加载活动页面的浮动操作按钮;
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (BuildContext context) => super.widget));
Run Code Online (Sandbox Code Playgroud)
小智 5
同样的问题困扰了我很长时间,但最后我想出了一个非常简单的答案
Navigator.pop(context); // pop current page
Navigator.pushNamed(context, "Setting"); // push it back in
Run Code Online (Sandbox Code Playgroud)