toChannelRepresentation method Null safety

  1. @override
Iterable<Map<String, Object?>> toChannelRepresentation(
  1. PlatformMenuDelegate delegate,
  2. {required MenuItemSerializableIdGenerator getId}
)
override

Converts the representation of this item into a map suitable for sending over the default "flutter/menu" channel used by DefaultPlatformMenuDelegate.

The delegate is the PlatformMenuDelegate that is requesting the serialization. The index is the position of this menu item in the list of menus of the PlatformMenu it belongs to, and count is the number of menus in the PlatformMenu it belongs to.

The getId parameter is a MenuItemSerializableIdGenerator function that generates a unique ID for each menu item, which is to be returned in the "id" field of the menu item data.

Implementation

@override
Iterable<Map<String, Object?>> toChannelRepresentation(
  PlatformMenuDelegate delegate, {
  required MenuItemSerializableIdGenerator getId,
}) {
  assert(() {
    if (!hasMenu(type)) {
      throw ArgumentError(
        'Platform ${defaultTargetPlatform.name} has no platform provided menu for '
        '$type. Call PlatformProvidedMenuItem.hasMenu to determine this before '
        'instantiating one.',
      );
    }
    return true;
  }());

  return <Map<String, Object?>>[
    <String, Object?>{
      _kIdKey: getId(this),
      _kEnabledKey: enabled,
      _kPlatformDefaultMenuKey: type.index,
    },
  ];
}