无法在 onMessage FCM 中触发alterdialog

问题描述

这个想法是,当应用程序处于前台时,我想显示一个警报对话框,当用户从对话框中按下 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...