onAdd method

  1. @override
List<AnimatedSnackBar> onAdd(
  1. List<AnimatedSnackBar> snackBars,
  2. AnimatedSnackBar self
)
override

Implementation

@override
List<AnimatedSnackBar> onAdd(
    List<AnimatedSnackBar> snackBars, AnimatedSnackBar self) {
  final index = snackBars.indexWhere(
    (element) => element.info.key.currentContext != null,
  );

  if (index != -1) {
    bool isDesktop =
        MediaQuery.of(snackBars[index].info.key.currentContext!).size.width >
            600;
    bool shouldRemove(AnimatedSnackBar element) {
      bool isMobileAndSamePosition =
          (element.mobileSnackBarPosition == self.mobileSnackBarPosition &&
              !isDesktop);
      bool isDesktopAndSamePosition =
          (element.desktopSnackBarPosition == self.desktopSnackBarPosition &&
              isDesktop);

      return element.info.createdAt.isBefore(self.info.createdAt) &&
          (isMobileAndSamePosition || isDesktopAndSamePosition);
    }

    snackBars
        .where(
      shouldRemove,
    )
        .forEach((element) {
      element.info.key.currentState?.fadeOut().then(
            (value) => element.remove(),
          );
    });

    snackBars.removeWhere(shouldRemove);

    return snackBars;
  }

  return snackBars;
}