showWordInfoBottomSheet function

Future<void> showWordInfoBottomSheet({
  1. required BuildContext context,
  2. required WordRef ref,
  3. WordInfoKind initialKind = WordInfoKind.recitations,
  4. required bool isDark,
  5. WordInfoBottomSheetStyle? wordInfoStyle,
})

Implementation

Future<void> showWordInfoBottomSheet({
  required BuildContext context,
  required WordRef ref,
  WordInfoKind initialKind = WordInfoKind.recitations,
  required bool isDark,
  WordInfoBottomSheetStyle? wordInfoStyle,
}) async {
  final ctrl = WordInfoCtrl.instance;
  ctrl.setSelectedKind(initialKind);

  final WordInfoBottomSheetStyle defaults = wordInfoStyle ??
      WordInfoBottomSheetTheme.of(context)?.style ??
      WordInfoBottomSheetStyle.defaults(isDark: isDark, context: context);
  final size = MediaQuery.sizeOf(context);
  // final maxHFactor = (defaults.maxHeightFactor ?? 0.9).clamp(0.0, 1.0);
  final maxWFactor = (defaults.maxWidthFactor ?? 1.0).clamp(0.0, 1.0);

  await showModalBottomSheet(
    context: context,
    isScrollControlled: true,
    backgroundColor: Colors.transparent,
    enableDrag: true,
    isDismissible: true,
    constraints: BoxConstraints(
      maxHeight: size.height * .9,
      maxWidth: size.width * maxWFactor,
    ),
    shape: const RoundedRectangleBorder(
      borderRadius: BorderRadius.vertical(top: Radius.circular(16)),
    ),
    builder: (BuildContext modalContext) {
      return WordInfoWidget(
        ref: ref,
        initialKind: initialKind,
        ctrl: ctrl,
        isDark: isDark,
        defaults: defaults,
      );
    },
  );
}