showMessageBox method

int showMessageBox(
  1. String title,
  2. String message,
  3. List<MessageBoxButton> buttons, {
  4. Window? window,
  5. List<MessageBoxFlags>? flags,
})

Show a message box.

SDL Docs

Implementation

int showMessageBox(
  final String title,
  final String message,
  final List<MessageBoxButton> buttons, {
  final Window? window,
  final List<MessageBoxFlags>? flags,
}) {
  final titlePointer = title.toCharPointer();
  final messagePointer = message.toCharPointer();
  final a = malloc<SDL_MessageBoxButtonData>(buttons.length);
  for (var i = 0; i < buttons.length; i++) {
    final button = buttons[i];
    final textPointer = button.text.toCharPointer();
    a[i]
      ..buttonid = button.id
      ..flags = button.flags.fold(
        0,
        (final previousValue, final element) =>
            previousValue | element.toInt(),
      )
      ..text = textPointer;
  }
  _messageBoxDataPointer.ref
    ..title = titlePointer
    ..message = messagePointer
    ..window = window?.handle ?? nullptr
    ..numbuttons = buttons.length
    ..buttons = a
    ..flags = [for (final f in flags ?? <MessageBoxFlags>[]) f.toInt()].xor();
  checkReturnValue(sdl.SDL_ShowMessageBox(_messageBoxDataPointer, xPointer));
  final buttonId = xPointer.value;
  [a, titlePointer].forEach(malloc.free);
  return buttonId;
}