showOptionBottomSheet method
void
showOptionBottomSheet({})
Implementation
void showOptionBottomSheet({
required BuildContext context,
required List<Map<String, String>>? options,
required Function({required String key, required String value}) onTap,
required String heading,
String? value,
ValueChanged<String>? onSearchChanged,
}) async {
debugPrint("Options : $options");
showModalBottomSheet<String>(
context: context,
isScrollControlled: true,
builder: (_) => Padding(
padding: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom,
),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 14.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Padding(
padding: const EdgeInsets.only(left: 16.0, right: 8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(heading, style: Styles.tsBlack3BSemiBold16()),
IconButton(
onPressed: () => context.pop(),
icon:
Icon(Icons.clear, size: 30, color: AppColors.greyB5),
),
],
),
),
if (onSearchChanged != null)
Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16.0,
vertical: 8.0,
),
child: TextField(
onChanged: onSearchChanged,
decoration: InputDecoration(
hintText: Strings.search,
prefixIcon: const Icon(Icons.search, color: Colors.grey),
contentPadding: const EdgeInsets.symmetric(
horizontal: 16,
vertical: 12,
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
borderSide: BorderSide(color: AppColors.greyB5),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
borderSide: BorderSide(color: AppColors.greyB5),
),
),
),
),
10.h,
ListView(
shrinkWrap: true,
children: options?.map((option) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 10.0),
child: ListTile(
dense: true,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
tileColor: value == option["value"]
? AppColors.primaryColor().withOpacity(0.2)
: null,
title: Text(option["key"] ?? ""),
onTap: () => onTap(
key: option["key"] ?? "",
value: option["value"] ?? "",
),
),
);
}).toList() ??
[],
),
],
),
),
),
);
}