openDialog<T> static method

Future<T?> openDialog<T>({
  1. required BuildContext context,
  2. required Widget dialog,
  3. bool barrierDismissible = true,
  4. Color barrierColor = Colors.black54,
  5. bool useSafeArea = true,
})

Открывает диалоговое окно.

context — контекст для отображения диалога. dialog — виджет, представляющий диалог. barrierDismissible — возможность закрытия диалога нажатием вне его области (по умолчанию true). barrierColor — цвет затемнения фона (по умолчанию Colors.black54). useSafeArea — учитывать безопасную зону экрана (по умолчанию true).

Возвращает результат, полученный после закрытия диалога.

Implementation

static Future<T?> openDialog<T>({
  required BuildContext context,
  required Widget dialog,
  bool barrierDismissible = true,
  Color barrierColor = Colors.black54,
  bool useSafeArea = true,
}) async {
  await closeDialog();
  _isDialogOpened = true;

  final result = await _router.pushNativeRoute<T>(
    DialogRoute(
      context: context,
      barrierDismissible: barrierDismissible,
      barrierColor: barrierColor,
      useSafeArea: useSafeArea,
      builder: (_) => PopScope(
        onPopInvokedWithResult: (_, __) {
          _isDialogOpened = false;
        },
        child: dialog,
      ),
    ),
  );

  return result;
}