getInAppMessages method

  1. @override
Future<List<InAppMessageData>> getInAppMessages()
override

Implementation

@override
Future<List<InAppMessageData>> getInAppMessages() async {
  try {
    List<Object?> messages = await methodChannel.invokeMethod('getInAppMessages');
    return messages.map((m) {
      var message = m as Map<Object?, Object?>;
      var buttons = message['buttons'] as List<Object?>;

      return InAppMessageData(
        message['id'] as String,
        message['title'] as String,
        message['body'] as String,
        InAppMessageType.getByValue(message['type'] as int),
        getDate(message['creationDate']),
        getDate(message['expirationDate']),
        getDate(message['receptionDate']),
        message['hasBeenSeen'] as bool,
        buttons.map((b) {
          var button = b as Map<Object?, Object?>;
          return ButtonData(
            button['id'] as String,
            button['label'] as String,
            NotificationButtonType.getByValue(button['type'] as int),
            button['value'] as String,
            button['data']
          );
        }).toList()
      );
    }).toList();
  }
  on PlatformException catch(exception) {
    log.severe('Exception when getting inapp messages status: ${exception.message}');
    return [];
  }
}