我正在通过flutter_local_notifications为我的应用使用通知。我的应用程序包含两个小部件。 FirstPage和SecondPage小部件/类。我的FirstPage小部件的目的是显示将来会发生的警报/通知列表。而SecondPage小部件的目的是创建通知。
基本上,当我打开我的应用程序时,它将显示FirstPage,然后我可以使用Navigation pushNamed导航到我的SecondPage。
理想情况下,当我点击通知时,它将在首页上显示一个对话框。
问题是,当我点击通知时,第一页上什么都没有显示,但是当我导航至第二页时,对话框出现了。
我尝试使用全局变量将FirstPage的上下文传递给SecondPage上的对话框:
BuildContext _contextOfFirst; // The global variable I used to store the context of FirstPage
...
class FirstPageState extends State<FirstPage> {
...
@override
Widget build(BuildContext context){
_contextOfFirst = context; // FirstPage's context was stored on my global variable
}
}
...
class SecondPageState extends State<SecondPage> {
...
Future onselectNotification(String payload) async{
print(_contextOfFirst); // Just for checking
showCupertinoDialog(
context: _contextOfFirst, // I placed it here. Hoping that it will be displayed on the FirstPage
builder: (_) => new CupertinoAlertDialog(
title: new Text("Some Title"),
content: new Text("$payload")
)
);
}
...
}
即使我将FirstPage的上下文传递到对话框之后,该对话框仍然不会显示在FirstPage上,当我导航到SecondPage时,该对话框也会出现在其中。
我认为,通过从FirstPage向对话框提供上下文,它将使对话框出现在FirstPage上。但是我错了。
我很想知道我哪里出了错。
我很感谢你们的启发。
答案 0 :(得分:0)
您正在第一个活动中显示通知,并在第二个活动中调用显示onselectNotification
对话框的位置!这没有道理。
因此,我建议您将onselectNotification
放在头等舱中,并作为回调来调用对话框以显示,并设置计时器或在按钮上单击显示第二项活动(如果共享了showCupertinoDialog
的代码,我可以知道您要实现哪种情况)。
因此,您的问题不是上下文问题,这只是调用指令的顺序错误。