showOptionsBottomSheet function
void
showOptionsBottomSheet({
- required BuildContext context,
- required Text title,
- required List<
ListTile> options, - required ValueChanged<
int> onItemSelected, - bool? showSkipButton,
- String? skipButtonText,
- VoidCallback? onSkipPressed,
Implementation
void showOptionsBottomSheet({
required BuildContext context,
required Text title,
required List<ListTile> options,
required ValueChanged<int> onItemSelected,
bool? showSkipButton,
String? skipButtonText,
VoidCallback? onSkipPressed,
}) {
showModalBottomSheet(
context: context,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(30.0),
topRight: Radius.circular(30.0),
),
),
isScrollControlled: true,
builder: (context) {
return SafeArea(
child: Container(
padding: EdgeInsets.all(10),
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 10),
child: Align(alignment: Alignment.centerLeft, child: title),
),
Container(
child: ListView(
shrinkWrap: true,
physics: ScrollPhysics(),
padding: EdgeInsets.zero,
children: options.map((e) {
int index = options.indexOf(e);
return InkWell(
onTap: () {
onItemSelected(index);
print(index);
},
child: e);
}).toList(),
),
),
Visibility(
visible: showSkipButton ?? false,
child: Container(
margin: EdgeInsets.symmetric(horizontal: 10),
child: CustomButton(
text: skipButtonText ?? "Cancel",
onPressed: onSkipPressed ??
() {
Navigator.of(context).pop();
}),
),
),
],
),
),
),
);
});
}