相关疑难解决方法(0)

Flutter - 如何获取当前上下文?

我正在使用 Firebase 云消息传递通知,当我在应用程序内部时收到通知后,我想显示一个对话框或小吃栏,我的问题是我正在我的小部件树(启动画面)顶部初始化 firebase 配置一旦应用程序启动)

_fireBaseMessaging.configure(
  onMessage: (Map<String, dynamic> message) async {
    dynamic data = message['data'];
    ................ // Adding a snackbar/alertdialog here doesn't work
  },
);
Run Code Online (Sandbox Code Playgroud)

显然,如果我设置了一个对话框或小吃栏,它就不会显示,因为我需要当前页面的上下文,有没有办法获取当前上下文?

我也尝试将它放在我的启动画面的构建小部件中,但是一旦我在另一个页面上,对话框仍然没有显示。

 @override
  Widget build(BuildContext context) {
    _fireBaseMessaging.configure(
      onMessage: (Map<String, dynamic> message) async {
        print("onMessage: $message");
        dynamic data = message['data'];
        if (data['id'] == '1') {
          newPro = true;
        } else if (data['id'] == '2') {
          print("THIS WORKS!!!");
          showDialog(
              context: context,
              builder: (context) => AlertDialog(
                    content: ListTile(
                      title: Text("TEST"),
                      subtitle: Text("TEST"),
                    ),
                    actions: <Widget>[
                      FlatButton( …
Run Code Online (Sandbox Code Playgroud)

firebase flutter firebase-cloud-messaging

10
推荐指数
4
解决办法
6577
查看次数

Flutter Firebase 消息传递 - 应用程序打开时不显示推送通知

我是 flutter 新手,我只是想将 firebase 推送通知接收到我的 flutter 应用程序。当应用程序关闭并在后台时,会收到推送通知。但是当应用程序打开时,正在接收推送通知,但它没有显示警报通知(我想在我的应用程序打开时将推送通知标题和正文显示为警报)。这是我的代码。

_fcm.configure(
      onMessage: (Map<String, dynamic> message) async {
        showDialog(
          context: context,
          builder: (context) => AlertDialog(
            content: ListTile(
              title: Text(message['notification']['title']),
              subtitle: Text(message['notification']['body']),
            ),
            actions: <Widget>[
              FlatButton(
                child: Text('Ok'),
                onPressed: () => Navigator.of(context).pop(),
              ),
            ],
          ),
        );
        print("onMessage: $message");
      },
      onLaunch: (Map<String, dynamic> message) async {
        print("onLaunch: $message");
        
      },
      onResume: (Map<String, dynamic> message) async {
        print("onResume: $message");
      },
    );
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?

push-notification firebase flutter

5
推荐指数
1
解决办法
2万
查看次数