openCountryDialog function
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),
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,
);
}
},
);
}