show<T> static method

Future<T?> show<T>(
  1. BuildContext context, {
  2. required Widget child,
  3. String? title,
  4. String? description,
  5. bool isScrollControlled = true,
  6. bool useSafeArea = true,
})

Implementation

static Future<T?> show<T>(
  BuildContext context, {
  required Widget child,
  String? title,
  String? description,
  bool isScrollControlled = true,
  bool useSafeArea = true,
}) {
  final colors = context.colors;

  return showModalBottomSheet<T>(
    context: context,
    isScrollControlled: isScrollControlled,
    useSafeArea: useSafeArea,
    backgroundColor: Colors.transparent,
    barrierColor: colors.textPrimary.withValues(alpha: .32),
    builder: (sheetContext) {
      final sheetColors = sheetContext.colors;
      final type = sheetContext.typography;

      return Container(
        decoration: BoxDecoration(
          color: sheetColors.card,
          borderRadius: BorderRadius.vertical(
            top: Radius.circular(Dimensions.r24),
          ),
          border: Border(top: BorderSide(color: sheetColors.borderSoft)),
        ),
        child: Padding(
          padding: EdgeInsets.only(
            left: Dimensions.s16,
            right: Dimensions.s16,
            bottom:
                MediaQuery.viewInsetsOf(sheetContext).bottom + Dimensions.s16,
          ),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Dimensions.vBox12,
              Align(
                child: Container(
                  width: Dimensions.s40,
                  height: Dimensions.s4,
                  decoration: BoxDecoration(
                    color: sheetColors.borderStrong,
                    borderRadius: Dimensions.radFull,
                  ),
                ),
              ),
              if (title != null) ...[
                Dimensions.vBox20,
                Text(title, style: type.section),
                if (description != null) ...[
                  Dimensions.vBox8,
                  Text(description, style: type.paragraph),
                ],
              ],
              Dimensions.vBox20,
              child,
            ],
          ),
        ),
      );
    },
  );
}