dismissDialog<T extends Object?> static method

Future<void> dismissDialog<T extends Object?>(
  1. DialogShower? dialog, {
  2. String? key,
  3. T? result,
})

Implementation

static Future<void> dismissDialog<T extends Object?>(DialogShower? dialog, {String? key, T? result}) async {
  // dismiss from top to bottom if dialog in list
  Future<void> deleteWithDismiss(DialogShower dialog) async {
    List<DialogShower> tmp = [..._list()];
    for (int i = tmp.length - 1; i >= 0; i--) {
      DialogShower d = tmp.elementAt(i);
      deleteInRepo(d);
      await _dismiss<T>(d, result: result);
      if (d == dialog) {
        break;
      }
    }
  }

  if (dialog != null && (_list().contains(dialog))) {
    await deleteWithDismiss(dialog);
  }
  if (key != null && (dialog = _map()[key]) != null) {
    await deleteWithDismiss(dialog!);
  }
}