showAdaptive<T> static method

Future<T?> showAdaptive<T>(
  1. BuildContext context,
  2. TModalWidgetBuilder<T> builder, {
  3. String? title,
  4. String? subTitle,
  5. String? imageUrl,
  6. String? description,
  7. bool persistent = false,
  8. double? width,
  9. bool? showCloseButton,
  10. Widget layoutBuilder(
    1. BuildContext context,
    2. Widget child
    )?,
})

Shows an adaptive modal dialog.

On desktop, this displays a regular modal using show. On mobile, it pushes a new page using TPageWrapper.

Implementation

static Future<T?> showAdaptive<T>(
  BuildContext context,
  TModalWidgetBuilder<T> builder, {
  String? title,
  String? subTitle,
  String? imageUrl,
  String? description,
  bool persistent = false,
  double? width,
  bool? showCloseButton,
  Widget Function(BuildContext context, Widget child)? layoutBuilder,
}) {
  final layout = layoutBuilder ??
      (ctx, child) => defaultAdaptiveLayoutBuilder(
            ctx,
            child,
            title: title,
            subTitle: subTitle,
            imageUrl: imageUrl,
            description: description,
            onBackPressed: () => Navigator.of(ctx).pop(),
          );

  // Mobile: always push a full page.
  if (!context.isDesktop) {
    return Navigator.of(context).push<T>(
      MaterialPageRoute(
        builder: (mContext) {
          final modalCtx = TModalContext<T>(mContext);
          return layout(mContext, builder(modalCtx));
        },
      ),
    );
  }

  return show<T>(
    context,
    builder,
    persistent: persistent,
    width: width,
    layoutBuilder: layout,
  );
}