import 'package:flutter/material.dart';

class DialogPage extends Page<dynamic> {
  final Widget child;
  final bool dismissable;

  const DialogPage({required this.child, this.dismissable = true, super.key});

  @override
  Route<dynamic> createRoute(BuildContext context) {
    return DialogRoute(
      settings: this,
      useSafeArea: true,
      context: context,
      barrierDismissible: dismissable,
      builder: (context) {
        return PopScope(
          canPop: dismissable,
          child: Dialog(
            clipBehavior: Clip.antiAlias,
            insetPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 24),
            shape: RoundedRectangleBorder(
              borderRadius: BorderRadiusGeometry.circular(32),
            ),
            child: child,
          ),
        );
      },
    );
  }
}