I have a function that call showModalBottomSheet which I need to remove the barrier.
Future<..> popup() async => await showModalBottomSheet<..>(
...
builder : (BuildContext context){
...
Navigator.of(context).pop(..);
...
}
);
I have two options. Since I don't want to use different Scaffold, that leaves me to use showBottomSheet instead. But I also want to keep my function as async because I need the BottomSheet to return a value on it's dismiss. showBottomSheet returns PersistentBottomSheetController not a Future. I have no idea how to implement a Future returning function from it, the way I did with showModalBottomSheet.
Future<..> popup() async{
???
Scaffold.of(context).showBottomSheet(..)<..>(
(BuildContext context){
...
Navigator.of(context).pop(..);
...
}
);
???
}
Greatly appreciate the help. Thank you.
CodePudding user response:
You can't return Future from showModalBottomSheet instead
you can use isClosed to check if bottom sheet closed and this getter return future.
you can use it like:
Future<bool> popup(BuildContext context) async{
PersistentBottomSheetController myModal = showBottomSheet(
context: context,
builder: (context) {
return const Text("Modal");
},
);
Future<bool> isClosed = await myModal.closed;
return isClosed;
}
