您现在的位置是:首页 > 文章详情

Flutter Widgets 之 SnackBar

日期:2020-02-29点击:422

注意:无特殊说明,Flutter版本及Dart版本如下:

  • Flutter版本: 1.12.13+hotfix.5
  • Dart版本: 2.7.0

基础用法

应用程序有时候需要弹出消息提示用户,比如‘网络连接失败’、‘下载成功’等提示,就像Android
等Toast,在Flutter中使用SnackBar组件,用法如下:

Scaffold.of(context).showSnackBar(SnackBar( content: Text('老孟,一枚有态度的程序员'), ));

注意并不是在build方法中直接使用SnackBar组件,而是调用Scaffold.of(context).showSnackBar方法,消息会在底部弹出并显示一段时间,默认显示4秒,然后弹出,我们可以设置其显示的时间:

Scaffold.of(context).showSnackBar(SnackBar( duration: Duration(seconds: 1), ));

显示的时间为1秒,content属性不一定是文字,也可以是其他组件,比如显示一个图标和文字:

Scaffold.of(context).showSnackBar(SnackBar( content: Row( children: <Widget>[ Icon(Icons.check,color: Colors.green,), Text('下载成功')], ), duration: Duration(seconds: 1), ));

效果如下:

通过shape属性设置其形状:

Scaffold.of(context).showSnackBar(SnackBar( content: Row( children: <Widget>[ Icon(Icons.check,color: Colors.green,), Text('下载成功')], ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.all(Radius.circular(50)) ), duration: Duration(seconds: 1), ));

效果如下:

SnackBar的有2种弹出形式,默认是fixed,直接在底部弹出,另一种是floating,悬浮在底部,用法如下:

Scaffold.of(context).showSnackBar(SnackBar( content: Row( children: <Widget>[ Icon(Icons.check,color: Colors.green,), Text('下载成功')], ), behavior: SnackBarBehavior.floating, ));

floating效果:

我们还可以对SnackBar增加行为组件,比如增加一个“知道了”按钮,点击“知道了”,消息马上隐藏,用法如下:

Scaffold.of(context).showSnackBar(SnackBar( content: Row( children: <Widget>[ Icon(Icons.check,color: Colors.green,), Text('下载成功')], ), action: SnackBarAction( label: '知道了', onPressed: (){}, ), ));

效果:

瞬间多个弹出延迟问题

当短时间内多次调用SnackBar方法时,SnackBar消息将会以队列的形式一个一个的弹出,比如下面的代码:

RaisedButton( child: Text( '点我,弹出SnackBar', ), onPressed: () { List.generate(10, (index){ Scaffold.of(context).showSnackBar(SnackBar( content: Text('我是消息:$index'), )); }); }, )

默认情况下每个显示4秒,如果有10个,那么40秒内会一直弹消息,体验明显不友好,我们希望的效果是如果有新的消息时,旧的都消息立刻消失,显示新的消息,只需在弹出新的SnackBar时移除现在的SnackBar,

Scaffold.of(context).removeCurrentSnackBar(); Scaffold.of(context).showSnackBar(...);

更多相关阅读:

原文链接:https://yq.aliyun.com/articles/747318
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章