import 'dart:math'; import 'package:flutter/material.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/themes.dart'; Future showAdaptiveBottomSheet({ required BuildContext context, required Widget Function(BuildContext) builder, bool isDismissible = true, bool isScrollControlled = true, bool useRootNavigator = true, }) { if (FluffyThemes.isColumnMode(context)) { return showDialog( context: context, useRootNavigator: useRootNavigator, barrierDismissible: isDismissible, useSafeArea: true, builder: (context) => Center( child: Container( margin: const EdgeInsets.all(16), constraints: const BoxConstraints( maxWidth: 480, maxHeight: 720, ), child: Material( elevation: Theme.of(context).dialogTheme.elevation ?? 4, shadowColor: Theme.of(context).dialogTheme.shadowColor, borderRadius: BorderRadius.circular(AppConfig.borderRadius), color: Theme.of(context).scaffoldBackgroundColor, clipBehavior: Clip.hardEdge, child: builder(context), ), ), ), ); } return showModalBottomSheet( context: context, builder: (context) => Padding( padding: EdgeInsets.zero, child: ClipRRect( borderRadius: const BorderRadius.only( topLeft: Radius.circular(AppConfig.borderRadius / 2), topRight: Radius.circular(AppConfig.borderRadius / 2), ), child: builder(context), ), ), useRootNavigator: useRootNavigator, isDismissible: isDismissible, isScrollControlled: isScrollControlled, constraints: BoxConstraints( maxHeight: min(MediaQuery.of(context).size.height - 32, 600), maxWidth: FluffyThemes.columnWidth * 1.25, ), backgroundColor: Colors.transparent, clipBehavior: Clip.hardEdge, ); }