如何使用FlutterWidgets调用SnackBar方法-创新互联

基础用法

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

丹东网站建设公司创新互联,丹东网站设计制作,有大型网站制作公司丰富经验。已为丹东上1000+提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的丹东做网站的公司定做!
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: [
      Icon(Icons.check,color: Colors.green,),
      Text('下载成功')],
    ),
    duration: Duration(seconds: 1),
   ));

效果如下:

如何使用Flutter Widgets调用SnackBar方法

通过shape属性设置其形状:

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

效果如下:

如何使用Flutter Widgets调用SnackBar方法

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

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

floating效果:

如何使用Flutter Widgets调用SnackBar方法

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

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

效果:

如何使用Flutter Widgets调用SnackBar方法

瞬间多个弹出延迟问题

当短时间内多次调用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(...);

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文题目:如何使用FlutterWidgets调用SnackBar方法-创新互联
文章转载:http://azwzsj.com/article/dsieho.html