SnackBar是用户操作后,显示提示信息的一个控件,类似Toast
,会自动隐藏。它还可以添加操作按钮,等等。SnackBar是通过Scaffold
的showSnackBar
方法来显示的。所以要显示一个SnackBar,要先拿到Scaffold。
当BuildContext在Scaffold之前时,调用Scaffold.of(context)会报错。这时可以通过Builder Widget来解决
参数详解
属性 | 说明 |
content | 内容 |
backgroundColor | 背景颜色 |
elevation | 阴影高度 |
shape | 形状 |
behavior | 位置 SnackBarBehavior.fixed // 固定在底部 behavior:SnackBarBehavior.floating,//显示在[底部导航栏]上方 |
action | 动作(通常放按钮) |
duration | 停留时间,如一秒:Duration(seconds: 1), |
animation | 显示/隐藏动画 |
代码示例
//定义一个SnackBar
final snackBar = new SnackBar(content: new Text('这是一个SnackBar!'));
//显示SnackBar
Scaffold.of(context).showSnackBar(snackBar);
Builder 用法
Builder(builder: (BuildContext context) {
return Center(
child: InkWell(
onTap: () {
//定义
final mySnackBar = SnackBar(
content: Text('我是SnackBar'),
backgroundColor: Colors.black26,
duration: Duration(seconds: 1),
behavior:SnackBarBehavior.floating,
action: SnackBarAction(
label: '我是scackbar按钮',
onPressed: () {
print('点击了snackbar按钮');
}
),
);
//显示
Scaffold.of(context).showSnackBar(mySnackBar);
},
child: Padding(padding: EdgeInsets.all(10),child: Text('点 我'),),
),
);
}),
效果图
完整代码