showCountryPickerSheet method

Future<Country?> showCountryPickerSheet(
  1. BuildContext context, {
  2. Widget? title,
  3. Widget? cancelWidget,
  4. double cornerRadius = 25,
  5. bool focusSearchBox = false,
  6. double heightFactor = 0.9,
  7. List<String> filteredCountries = const [],
  8. TextStyle itemTextStyle = const TextStyle(fontSize: 16),
  9. TextStyle searchInputStyle = const TextStyle(fontSize: 16),
  10. InputDecoration? searchInputDecoration,
  11. double flagIconWidth = 32,
  12. double flagIconHeight = 22,
  13. bool showSeparator = false,
  14. String searchHintText = "Search country name, code",
})

Implementation

Future<Country?> showCountryPickerSheet(BuildContext context,{Widget? title, Widget? cancelWidget, double cornerRadius = 25, bool focusSearchBox = false, double heightFactor = 0.9, List<String> filteredCountries = const [], TextStyle itemTextStyle =  const TextStyle(fontSize: 16), TextStyle searchInputStyle = const TextStyle(fontSize: 16), InputDecoration? searchInputDecoration, double flagIconWidth = 32, double flagIconHeight = 22, bool showSeparator = false, String searchHintText = "Search country name, code"})async {
  assert(heightFactor <= 0.9 && heightFactor >= 0.4,
  'heightFactor must be between 0.4 and 0.9');
  return await showModalBottomSheet<Country?>(
      context: context,
      isScrollControlled: true,
      shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.only(
              topLeft: Radius.circular(cornerRadius),
              topRight: Radius.circular(cornerRadius))),
      builder: (_) {
        return SizedBox(
          height: MediaQuery.of(context).size.height * heightFactor,
          child: Column(
            children: <Widget>[
              const SizedBox(height: 12),
              Stack(
                children: <Widget>[
                  cancelWidget ??
                      Positioned(
                        right: 8,
                        top: 0,
                        bottom: 0,
                        child: TextButton(
                          style: const ButtonStyle(
                            padding: WidgetStatePropertyAll(EdgeInsets.symmetric(vertical: 4))
                          ),
                          onPressed: () => Navigator.pop(context),
                          child: const Text('Cancel'),
                        ),
                      ),
                  Center(
                    child: title ??
                        const Text(
                          'Choose country',
                          textAlign: TextAlign.center,
                          style: TextStyle(
                            fontSize: 22,
                            fontWeight: FontWeight.w500,
                          ),
                        ),
                  ),
                ],
              ),
              const  SizedBox(height: 10),
              Expanded(
                child: AdvanceCountryPickerWidget(
                  onSelected: (country) => Navigator.of(context).pop(country),
                  filteredCountries: filteredCountries,
                  itemTextStyle: itemTextStyle,
                  searchHintText: searchHintText,
                  searchInputDecoration: searchInputDecoration,
                  searchInputStyle: searchInputStyle,
                  showSeparator: showSeparator,
                  flagIconWidth: flagIconWidth,
                  flagIconHeight: flagIconHeight,
                  focusSearchBox: focusSearchBox,
                ),
              ),
            ],
          ),
        );
      });
}