首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当应用程序被杀死时,颤振本地通知不会重定向到相关屏幕

当应用程序被杀死时,颤振本地通知不会重定向到相关屏幕
EN

Stack Overflow用户
提问于 2021-10-05 14:27:37
回答 1查看 2.3K关注 0票数 0

我正在使用flutter_local_notifications在一个颤振应用程序,以安排通知在特定的时间。

当我单击通知时,当应用程序运行时,它会按照预期的方式工作,并显示到相应的屏幕上;但是,当应用程序被杀死时单击通知时,它会转移到主屏幕。

由于此通知是自动调度的,而不是在用户操作上进行的,所以我是在一个函数而不是一个小部件中进行的。所以,我没有context。为了解决这个问题,我使用了GlobalKey类型的NavigatorState

代码语言:javascript
复制
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
navigatorKey.currentState?.push(MaterialPageRoute(builder: (ctx) {
  return Scaffold(
    appBar: AppBar(
      title: Text('notification clicked'),
    ),
  );
}));

我尝试的第二个方法是使用有状态小部件

代码语言:javascript
复制
class Noti extends StatefulWidget {
  const Noti({Key? key}) : super(key: key);
  @override
  NotiState createState() => NotiState();
}

class NotiState extends State<Noti> {
  @override
  void initState() {
    super.initState();
    initNotification();
  }

  Future initNotification() async {
    const AndroidInitializationSettings initializationSettingsAndroid =
        AndroidInitializationSettings('bolt');
    final InitializationSettings initializationSettings =
        InitializationSettings(android: initializationSettingsAndroid);

    flutterLocalNotificationsPlugin.initialize(
      initializationSettings,
      onSelectNotification: selectNotification,
    );
    const notDetails = NotificationDetails(
        android: AndroidNotificationDetails('1', 'Scheduled Review',
            channelDescription: 'Review reminders at scheduled time'));
    flutterLocalNotificationsPlugin.periodicallyShow(1, 'Scheduled Review',
        'Every Minute', RepeatInterval.everyMinute, notDetails);
  }

  Future selectNotification(String? payload) async {
    Navigator.push(context, MaterialPageRoute(builder: ((ctx) {
  return Scaffold(
    appBar: AppBar(
      title: Text('notification clicked'),
    ),
  );
})));
  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

我在主页中随机插入的这个Noti小部件,以便调用它的initState

同样的事情也发生在这里;也就是说,在应用程序死后单击通知时,我会被重定向到主屏幕,而不是一个标题为notification clicked的屏幕,这是这里的逻辑。但是,当应用程序处于活动状态时,它可以正常工作。我在上述库的8.2.09.0.0两种版本上都尝试过这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-05 21:09:23

没有见过这张纸条:

注意:从插件的4.0版本开始,调用初始化将不会通过点击要触发的通知来触发应用程序启动时的onSelectNotification回调。使用插件中可用的getNotificationAppLaunchDetails方法,如果需要处理通知,触发应用程序的启动,例如更改应用程序的主路径以进行深度链接。

基于initialRoutenotificationAppLaunchDetails改造解决了这一问题。

代码语言:javascript
复制
final NotificationAppLaunchDetails? notificationAppLaunchDetails =
      await flutterLocalNotificationsPlugin.getNotificationAppLaunchDetails();
  final didNotificationLaunchApp =
      notificationAppLaunchDetails?.didNotificationLaunchApp ?? false;
final initialRoute = didNotificationLaunchApp ? '/second' : '/first';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69452276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档