是否可以在flutter_local_notification插件的onSelectNotification上传递参数

时间:2020-02-08 05:01:48

标签: flutter push-notification notifications

很抱歉,我是新手,在为我的应用程序实施通知时目前遇到困难。 我正在使用flutter_local_notification插件,因为我听说它对于提醒目的以及在离线应用中都非常有用。

我目前面临将我的Note(模型)对象传递到onSelectNotification函数的问题

我的目标:为我的Note应用程序创建一个提醒图标,以便当通知由flutter_local_notification插件触发时。轻触通知,我将继续进行EditNotePage活动,并在其上显示相应的Note对象参数(标题,描述)

如何修改onSelectNotification,以便可以将Note对象传递给它。

我们非常感谢所有帮助!

很抱歉,没有提供太多代码。

FlutterLocalNotificationsPlugin 
flutterLocalNotificationsPlugin = 
new FlutterLocalNotificationsPlugin();

var initializationSettingsAndroid =
new AndroidInitializationSettings('app_icon');
var initializationSettingsIOS = IOSInitializationSettings(
onDidReceiveLocalNotification: onDidReceiveLocalNotification);
var initializationSettings = InitializationSettings(
initializationSettingsAndroid, initializationSettingsIOS);


flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: onSelectNotification);

1 个答案:

答案 0 :(得分:1)

您可以将Note对象编码为JSON字符串,然后将其传递到方法中以设置提醒,如下所示:

说这是您的Note课:

import 'package:meta/meta.dart';
import 'dart:convert';

class Note {
    final String title;    
    final String description;

    Note({@required this.title, @required this.description});

    //Add these methods below

    factory Note.fromRawJson(String str) => Note._fromJson(jsonDecode(str));

    String toRawJson() => jsonEncode(_toJson());

    factory Note._fromJson(Map<String, dynamic> json) => Note(
       title: json['title'],
       description: json['description'],
    );


    Map<String, dynamic> _toJson() => {
        'title': title,
        'description': description,
    };
}

现在,要设置通知,您可以从模型中创建JSON字符串,并将其作为payload传递给flutterLocalNotificationsPlugin方法,如下所示:

Note newNote = Note(title : 'Hello', description : 'This is my first reminder');
String noteJsonString = newNote.toRawJson();

await flutterLocalNotificationsPlugin.show(
    0, 'plain title', 'plain body', platformChannelSpecifics,
    payload: noteJsonString);

接下来,您将在payload方法中获得onSelectNotification字符串,并使用fromRawJson构造函数(它将json字符串解码并创建一个Note对象)来获得{ {1}}对象:

Note