open method

Future<void> open()

Implementation

Future<void> open() async {
  final textDirection = Directionality.of(context);

  final splitBorderRadius = _splitBorderRadius(textDirection);

  final shape = _getShape(splitBorderRadius);

  final propsA = _applyBorderRadiusToGridProps(
    splitBorderRadius.elementAt(0),
    gridPropsA,
  );

  final propsB = _applyBorderRadiusToGridProps(
    splitBorderRadius.elementAt(1),
    gridPropsB,
  );

  PlutoDualOnSelectedEvent? selected =
      await showDialog<PlutoDualOnSelectedEvent>(
          context: context,
          builder: (BuildContext ctx) {
            return Dialog(
              shape: shape,
              child: LayoutBuilder(
                builder: (ctx, size) {
                  return SizedBox(
                    width: (width ?? size.maxWidth) +
                        PlutoGridSettings.gridInnerSpacing,
                    height: height ?? size.maxHeight,
                    child: Directionality(
                      textDirection: textDirection,
                      child: PlutoDualGrid(
                        gridPropsA: propsA,
                        gridPropsB: propsB,
                        mode: mode,
                        onSelected: (PlutoDualOnSelectedEvent event) {
                          Navigator.pop(ctx, event);
                        },
                        display: display ?? PlutoDualGridDisplayRatio(),
                        divider: divider ?? const PlutoDualGridDivider(),
                      ),
                    ),
                  );
                },
              ),
            );
          });
  if (onSelected != null && selected != null) {
    onSelected!(selected);
  }
}