先看一下什么是SnackBar,如下图:
image
SnackBar是用户操作后,显示提示信息的一个控件,类似Toast
,会自动隐藏。它还可以添加操作按钮,等等。SnackBar是通过Scaffold
的showSnackBar
方法来显示的。所以要显示一个SnackBar,要先拿到Scaffold。
创建Scaffold
代码语言:javascript复制new Scaffold(
appBar: new AppBar(
title: new Text('SnackBar Demo'),
),
body: new SnackBarPage(),
);
显示SnackBar
首先创建一个SnackBar,再通过Scaffold的方法来显示。
代码语言:javascript复制final snackBar = new SnackBar(content: new Text('这是一个SnackBar!'));
Scaffold.of(context).showSnackBar(snackBar);
给SnackBar添加一个操作按钮
有时候,我们可能会想在显示的提示信息上添加一些操作。例如提示用户删除了一条消息,可以在提示信息上添加一个撤消的按钮,要达到这个效果,我们可以在SnackBar上添加一个操作按钮。
代码语言:javascript复制final snackBar = new SnackBar(
context: new Text('删除信息'),
action: new SnackBarAction(
label: '撤消',
onPressed: () {
// do something to undo
}
),
);
注意事项
当BuildContext在Scaffold之前时,调用Scaffold.of(context)会报错。这时可以通过Builder Widget来解决,代码如下:
代码语言:javascript复制body: new Builder(builder: (BuildContext context) {
return new Center(
child: new GestureDetector(
onTap: () {
final snackBar =
new SnackBar(content: new Text('这是一个SnackBar'));
Scaffold.of(context).showSnackBar(snackBar);
},
child: new Text('显示SnackBar'),
),
);
})
关于学习
flutter的学习文章及代码都整理在这个github仓库里