openCountryDialog function

Future<Country?> openCountryDialog(
  1. BuildContext context, {
  2. String? search,
  3. String? selectedHint,
  4. ValueChanged<Country>? onValuePicked,
  5. ValueChanged<Country>? onSelectedCountry,
  6. AnimationType animationType = AnimationType.scale,
  7. Duration duration = const Duration(milliseconds: 500),
})

Implementation

Future<Country?> openCountryDialog(BuildContext context,
    {String? search,
    String? selectedHint,
    ValueChanged<Country>? onValuePicked,
    ValueChanged<Country>? onSelectedCountry,
    AnimationType animationType = AnimationType.scale,
    Duration duration = const Duration(milliseconds: 500)}) async {
  return showGeneralDialog<Country>(
    context: context,
    barrierDismissible: true,
    barrierLabel: '',
    transitionDuration: duration,
    pageBuilder: (context, animation, secondaryAnimation) {
      return MyCountryPickerDialog(
        searchHint: search,
        selectHint: selectedHint,
        onValuePicked: onValuePicked,
      );
    },
    transitionBuilder: (context, animation, secondaryAnimation, child) {
      switch (animationType) {
        case AnimationType.fromTop:
          return SlideTransition(
            position: Tween<Offset>(
              begin: const Offset(0, -1),
              end: Offset.zero,
            ).animate(animation),
            child: child,
          );
        case AnimationType.fromBottom:
          return SlideTransition(
            position: Tween<Offset>(
              begin: const Offset(0, 1),
              end: Offset.zero,
            ).animate(animation),
            child: child,
          );
        case AnimationType.fromLeft:
          return SlideTransition(
            position: Tween<Offset>(
              begin: const Offset(-1, 0),
              end: Offset.zero,
            ).animate(animation),
            child: child,
          );
        case AnimationType.fromRight:
          return SlideTransition(
            position: Tween<Offset>(
              begin: const Offset(1, 0),
              end: Offset.zero,
            ).animate(animation),
            child: child,
          );
        case AnimationType.scale:
          return ScaleTransition(
            scale: animation,
            child: child,
          );
        case AnimationType.fade:
          return FadeTransition(
            opacity: animation,
            child: child,
          );
      }
    },
  );
}