问题描述
这个想法是,当应用程序处于前台时,我想显示一个警报对话框,当用户从对话框中按下 OK 按钮时,它会将它们导航到不同的屏幕。但是,不会出现更改对话框。如果我删除 alertdialog 并保留导航代码,则应用程序会在通知到达后立即导航到不同的屏幕。这是一种糟糕的用户体验,因为用户无法控制 UI。我希望用户确认他们想要导航到不同的屏幕。因此使用了警报对话框。
这是我的代码:
void initState(){
super.initState();
var initializationSettingsAndroid = AndroidInitializationSettings('@drawable/splash');
var initializationSettings = InitializationSettings(android:initializationSettingsAndroid);
FlutterlocalnotificationsPlugin.initialize(initializationSettings);
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print('Inside onmessage');
RemoteNotification notification = message.notification;
AndroidNotification android = message.notification?.android;
if (notification != null && android != null) {
FlutterlocalnotificationsPlugin.show(
notification.hashCode,notification.title,notification.body,NotificationDetails(
android: AndroidNotificationDetails(
channel.id,channel.name,channel.description,icon: '@drawable/splash',playSound: true
),));
AlertDialog(
title:Text(notification.title),actions: <Widget>[
TextButton(
child: Text('Cancel'),onpressed: () {
setState(() {
//Navigator.of(context).pop();
navigatorKey.currentState.push(
MaterialPageRoute(builder: (_) => OrdeRSScreen()));
});
}),],content:SingleChildScrollView(
child:
Column(
crossAxisAlignment: CrossAxisAlignment.start,children:[
Text(notification.body)
]
)
)
);
}
});
}
解决方法
您的代码只是表达了 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="list"></div>
,但它并没有对它做任何事情。这就是它不显示的原因。
解决方案:
您需要调用 showDialog 并将 AlertDialog
对象传递给它,如下所示:
AlertDialog