Files
syncrow-app/lib/features/shared_widgets/bottom_sheet/custom_bottom_sheet.dart
2024-06-12 20:30:34 +03:00

46 lines
1.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:syncrow_app/utils/context_extension.dart';
class CustomBottomSheet extends StatelessWidget {
const CustomBottomSheet({
super.key,
this.child,
this.height,
this.maxHeight,
this.radius = 20,
this.withClosed = true,
});
final Widget? child;
final double? height;
final double? maxHeight;
final double radius;
final bool withClosed;
@override
Widget build(BuildContext context) {
final bottom = MediaQuery.of(context).viewInsets.bottom;
return SafeArea(
child: ConstrainedBox(
constraints: BoxConstraints(
minHeight: height ?? 250,
maxHeight: maxHeight ?? context.height * 0.8,
),
child: SingleChildScrollView(
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
physics: bottom == 0
? const NeverScrollableScrollPhysics()
: const BouncingScrollPhysics(),
child: AnimatedContainer(
duration: const Duration(milliseconds: 50),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
),
padding: EdgeInsets.only(bottom: bottom),
child: child ?? const SizedBox(),
),
),
),
);
}
}