submitDialog<Payload, Result> static method

void submitDialog<Payload, Result>({
  1. required SmartRepository<Payload, Result> repository,
  2. required BuildContext context,
  3. required Widget builder(
    1. BuildContext,
    2. SmartState<Result>,
    3. VoidCallback close
    ),
  4. dynamic listener(
    1. BuildContext,
    2. SmartState<Result>
    )?,
  5. ComponentInitialAction<Payload> initialAction = const ComponentInitialAction.none(),
  6. bool dismissible = false,
})

Implementation

static void submitDialog<Payload, Result>({
  required SmartRepository<Payload, Result> repository,
  required BuildContext context,
  required Widget Function(BuildContext, SmartState<Result>, VoidCallback close) builder,
  Function(BuildContext, SmartState<Result>)? listener,
  ComponentInitialAction<Payload> initialAction = const ComponentInitialAction.none(),
  bool dismissible = false,
}) {
  final controller = SmartController<Payload, Result>();
  showDialog(
    barrierDismissible: false,
    context: context,
    builder: (_) {
      return SubmitDialogComponent(
        isDismissible: dismissible,
        onFinishedRendering: () => initialAction.whenOrNull(call: (data) => controller.call(data)),
        body: SmartFeatureBuilder.build<Payload, Result>(
          repository: repository,
          controller: controller,
          listener: listener,
          builder: (context, state) => builder(context, state, () => _onClose(context)),
        ),
        onClose: _onClose,
      );
    },
  );
}