showSearchableOptionsSheet method
void
showSearchableOptionsSheet({
- required BuildContext context,
- required String heading,
- required Widget optionsBuilder(
- BuildContext context
- required dynamic onSearchChanged(),
- String? selectedValue,
Implementation
void showSearchableOptionsSheet({
required BuildContext context,
required String heading,
required Widget Function(BuildContext context) optionsBuilder,
required Function(String) onSearchChanged,
String? selectedValue,
}) {
TextEditingController searchController = TextEditingController();
showModalBottomSheet(
context: context,
isScrollControlled: true,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(top: Radius.circular(20)),
),
builder: (c) {
return Padding(
padding: EdgeInsets.only(
bottom: MediaQuery.of(c).viewInsets.bottom,
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Container(
margin: const EdgeInsets.symmetric(vertical: 8),
width: 40,
height: 4,
decoration: BoxDecoration(
color: AppColors.greyD0,
borderRadius: BorderRadius.circular(2),
),
),
Padding(
padding:
const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
child: Text(heading, style: Styles.tsBlack3BSemiBold16()),
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: InputTextField(
onChanged: onSearchChanged,
textFieldWrapper: searchController,
hintText: Strings.search,
prefix: Padding(
padding:
const EdgeInsets.only(left: 16.0, top: 16, bottom: 16),
child: SvgPicture.asset(
Images.search,
color: AppColors.greyB5,
),
),
hintStyle: Styles.tsGrey80Regular12(),
borderRadius: 30,
),
),
20.h,
Flexible(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: optionsBuilder(c),
),
),
const SizedBox(height: 20),
],
),
);
},
);
}