lucky
lucky

Reputation: 315

how save notification in list Flutter

I implemented Notification plugin which i can fetch a list of alerts from the server .As you see i'm trying to fetch the last one .I would like to fetch the last 10 alerts not just one and save it in list.

after that i want to display all 10 notifiction to user.

this my code :

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'],
          //  RepeatInterval.everyMinute,
          platformChannelSpecifics);
    } else {
      print("no message");
    }
   
  }

and this the response from the server :

{
    "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"
                }
            ],

How i can implement that ?

Upvotes: 1

Views: 769

Answers (1)

Abdelazeem Kuratem
Abdelazeem Kuratem

Reputation: 1706

Try to loop on the notifications list and push notification for every item on this list

like this:

var response =
        await http.get(Uri.parse(ApiUtil.GET_ALERT), headers: headers);
    var data = json.decode(response.body);
    List notificationsList = data['data']['data']['data'];
    if (data['status'] == 200) {
      notificationsList.forEach((notification) {
        flutterLocalNotificationsPlugin.show(
            Random.nextInt(1000),
            notification['boxName'],
            notification['alert_description'],
            //  RepeatInterval.everyMinute,
            platformChannelSpecifics);
      });
    } else {
      print("no message");
    }

Upvotes: 1

Related Questions