showSnackBar method

void showSnackBar(
  1. NesSnackbar snackbar, {
  2. Alignment alignment = Alignment.bottomCenter,
})

Adds a NesSnackbar to the NesScaffold.

Implementation

void showSnackBar(
  NesSnackbar snackbar, {
  Alignment alignment = Alignment.bottomCenter,
}) {
  final message = _SnackbarMessage(
    id: _snackbarId++,
    snackbar: snackbar,
    alignment: alignment,
    offset: Offset(alignment.x, 0),
  );
  _snackbars.value = [
    ..._snackbars.value,
    message,
  ];

  WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
    _snackbars.value = _snackbars.value.map((e) {
      if (e.id == message.id) {
        return e.copyWith(
          offset: Offset.zero,
        );
      }
      return e;
    }).toList();
  });

  _waitABit().then((_) {
    _snackbars.value = _snackbars.value.map((e) {
      if (e.id == message.id) {
        return e.copyWith(
          markForRemoval: true,
          offset: Offset(alignment.x, 0),
        );
      }
      return e;
    }).toList();
  });

  _overlayController.show();
}