Flutter snackbar dismiss on SnackBarAction onPressed
21,209
Solution 1
Try using hideCurrentSnackBar
method
onPressed: () {
homeScaffoldKey.currentState.hideCurrentSnackBar();
},
More info here: https://docs.flutter.io/flutter/material/ScaffoldState/hideCurrentSnackBar.html
Solution 2
You can also use,
Scaffold.of(context).hideCurrentSnackBar();
Be careful when you use context, use the correct context.
NOTE
In the new Flutter Version, this method is deprecated. Therefore use
ScaffoldMessenger.of(context).hideCurrentSnackBar();
Solution 3
ScaffoldMessenger.of(context).hideCurrentSnackBar();
Solution 4
If you want to replace snackbar that show only one time,
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
final snackBar = SnackBar(content: Text("Hello, world"));
And also,
@override
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
And also,
onPressed: () {
_scaffoldKey.currentState.removeCurrentSnackBar();
_scaffoldKey.currentState.showSnackBar(snackBar);
}
Solution 5
Define your SnackBar
:
var snackBar = SnackBar(content: Text('Hello World'));
To show it:
ScaffoldMessenger.of(context).showSnackBar(snackBar);
To hide it:
ScaffoldMessenger.of(context).hideCurrentSnackBar();
To hide the last one and show a new one:
ScaffoldMessenger.of(context)
..hideCurrentSnackBar()
..showSnackBar(snackBar);
Comments
-
Ammy Kang over 2 years
I want to dismiss
SnackBar
onSnackBarAction
'sonPressed
method. I tried withNavigator.of(context).pop();
butSnackBar
is not dismissing my screen get black instead.Here is code:
void showInSnackBar(String value) { homeScaffoldKey.currentState.showSnackBar(new SnackBar(content: new Text(value), action: SnackBarAction( label: 'Dissmiss', textColor: Colors.yellow, onPressed: () { // Navigator.of(context).pop(); }, ),)); }