Flutter应用前台点击通知执行导航逻辑的实现方案
解决Flutter前台Firebase通知点击导航问题
你当前的问题核心在于:前台显示的通知是通过flutter_local_notifications插件生成的,Firebase的onMessageOpenedApp仅负责监听后台/应用终止状态下的通知点击,前台点击逻辑需要通过flutter_local_notifications自身的监听事件来实现。
具体实现步骤:
初始化
flutter_local_notifications时添加点击监听
在插件初始化流程中配置通知点击回调,用于解析payload并触发导航逻辑:final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); Future<void> initLocalNotifications() async { // 配置安卓/iOS初始化基础设置(根据你的现有配置补充) const AndroidInitializationSettings androidSettings = AndroidInitializationSettings('@mipmap/ic_launcher'); const IOSInitializationSettings iosSettings = IOSInitializationSettings(); const InitializationSettings initSettings = InitializationSettings(android: androidSettings, iOS: iosSettings); // 监听通知点击(新版API) await flutterLocalNotificationsPlugin.initialize( initSettings, onDidReceiveNotificationResponse: (NotificationResponse response) { if (response.payload != null) { // 将JSON字符串payload解析为Map final Map<String, dynamic> data = jsonDecode(response.payload!); // 调用你的导航处理方法 handleRoutingOnNotificationTap(data); } }, // 若使用旧版插件,可替换为以下回调: // onSelectNotification: (String? payload) { // if (payload != null) { // final Map<String, dynamic> data = jsonDecode(payload); // handleRoutingOnNotificationTap(data); // } // } ); }记得在你的
iosInit()或androidInit()方法中调用这个初始化函数。修正
showNotification的payload传递方式
之前直接使用msg.data.toString()会导致JSON解析失败,改用jsonEncode生成标准JSON字符串:void showNotification(RemoteMessage msg) { RemoteNotification? notification = msg.notification; if (notification == null) return; flutterLocalNotificationsPlugin.show( notification.hashCode, notification.title, notification.body, const NotificationDetails( android: AndroidNotificationDetails( 'your_channel_id', 'your_channel_name', importance: Importance.max, ), iOS: IOSNotificationDetails(), ), payload: jsonEncode(msg.data), // 传递标准JSON格式的payload ); }确保导航上下文可用
注意handleRoutingOnNotificationTap执行导航时需要可用的BuildContext,可提前通过GlobalKey<NavigatorState>全局存储导航键,避免上下文缺失问题。
内容的提问来源于stack exchange,提问作者Shehan DMG
相关产品推荐
相关产品推荐

