如何在颤振中显示多个通知

时间:2021-06-12 09:52:05

标签: flutter dart push-notification

我使用 flutter_local_notifications 包来设置通知。我有一个通知列表。就我而言,我的应用程序每 5 秒只显示最后一条通知,但我想显示最后 10 条通知。我该怎么做?

这是我的代码:

Future<void> repeatNotification() async {
    var androidChannelSpecifics = AndroidNotificationDetails(
      'CHANNEL_ID 3',
      'CHANNEL_NAME 3',
      "CHANNEL_DESCRIPTION 3",
      playSound: true,
      importance: Importance.max,
      priority: Priority.high,
      sound: RawResourceAndroidNotificationSound('notification'),
      styleInformation: DefaultStyleInformation(true, true),
    );
    var iosChannelSpecifics = IOSNotificationDetails();
    var platformChannelSpecifics = NotificationDetails(
        android: androidChannelSpecifics, iOS: iosChannelSpecifics);
    SharedPreferences localStorage = await SharedPreferences.getInstance();
    String token = localStorage.getString('access_token');
    Map<String, String> headers = {
      'Content-type': 'application/json',
      'Accept': 'application/json',
      'Authorization': 'Bearer $token'
    };
    var response =
        await http.get(Uri.parse(ApiUtil.GET_ALERT), headers: headers);
    var data = json.decode(response.body);
    var dataa = (data['data']['data']['data'][0]);
    if (data['status'] == 200) {
      flutterLocalNotificationsPlugin.show(
          0,
          dataa['boxName'],
          dataa['alert_description'],    
          platformChannelSpecifics);
    } else {
      print("no message");
    }
   
  }

这是来自服务器的响应:

{
    "code": 0,
    "message": " success",
    "data": {
        "data": {
            "current_page": 1,
            "data": [
                {
                    "id": 69,
                    "user_id": 53,
                    "boxIdentifiant": 1924589682265310,
                    "boxName": "box Malta",
                    "alert_date": "2021-05-30",
                    "alert_time": "09:40",
                    "alert_description": "Panne high",
                    "alert_level": "info"
                },
                {
                    "id": 68,
                    "user_id": 53,
                    "boxIdentifiant": 1924589682265310,
                    "boxName": "box Malta",
                    "alert_date": "2021-05-30",
                    "alert_time": "09:40",
                    "alert_description": "Panne Pression",
                    "alert_level": "warning"
                },
                {
                    "id": 67,
                    "user_id": 53,
                    "boxIdentifiant": 1924589682265309,
                    "boxName": "box masr",
                    "alert_date": "2021-05-30",
                    "alert_time": "09:40",
                    "alert_description": "Panne Pression",
                    "alert_level": "warning"
                },
                {
                    "id": 66,
                    "user_id": 53,
                    "boxIdentifiant": 1924589682265308,
                    "boxName": "box libya",
                    "alert_date": "2021-05-30",
                    "alert_time": "09:40",
                    "alert_description": "Panne Pression",
                    "alert_level": "warning"
                },
                {
                    "id": 62,
                    "user_id": 53,
                    "boxIdentifiant": 1924589682265245,
                    "boxName": "Box Sfax",
                    "alert_date": "2021-05-30",
                    "alert_time": "09:40",
                    "alert_description": "Panne Pression",
                    "alert_level": "warning"
                },
                {
                    "id": 61,
                    "user_id": 53,
                    "boxIdentifiant": 1924589682265243,
                    "boxName": "Box Tunis",
                    "alert_date": "2021-05-30",
                    "alert_time": "09:40",
                    "alert_description": "Panne Pression Roux",
                    "alert_level": "info"
                },
                {
                    "id": 58,
                    "user_id": 53,
                    "boxIdentifiant": 1924589682265244,
                    "boxName": "Box Office",
                    "alert_date": "2021-05-30",
                    "alert_time": "09:40",
                    "alert_description": "Panne Pression Roux",
                    "alert_level": "warning"
                },
                {
                    "id": 57,
                    "user_id": 53,
                    "boxIdentifiant": 1924589682265244,
                    "boxName": "Box Office",
                    "alert_date": "2021-05-30",
                    "alert_time": "09:40",
                    "alert_description": "Panne batterie",
                    "alert_level": "danger"
                },
                {
                    "id": 56,
                    "user_id": 53,
                    "boxIdentifiant": 1924589682265300,
                    "boxName": "box Maroc",
                    "alert_date": "2021-05-30",
                    "alert_time": "09:40",
                    "alert_description": "Panne batterie",
                    "alert_level": "danger"
                },
                {
                    "id": 54,
                    "user_id": 53,
                    "boxIdentifiant": 1924589682265246,
                    "boxName": "boxt mannouba",
                    "alert_date": "2021-05-30",
                    "alert_time": "09:45",
                    "alert_description": "Panne roue",
                    "alert_level": "info"
                }
            ],

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

在这一行中,您将数据显示为通知

var dataa = (data['data']['data']['data'][0])

并且您通过指定索引 0 仅获取第一个元素

然后你显示通知

要显示所有通知,您必须循环将数据数组扔到任何索引处,然后显示通知..像这样

For(int i = 0; i < data['data']['data']['data'].lemgth; i++) { var data = data['data']['data']['data'][i];

//显示带有数据的通知 }