Flutter 给控件加圆角 (类似 Android 中的 shape)

UI 设计中经常出现圆角的 Button 或者带有背景色的圆角控件(TextView、Button 等等),在 Android 中我们可以直接用 shape 来实现各种各样的圆角矩形的控件 UI,但是在 Flutter 中要怎么实现呢?下边是我总结的几种方式。作为笔记记录一下,防止后续在遇到此类问题。

(使用的Flutter 版本是 0.9.4)

《Flutter 给控件加圆角 (类似 Android 中的 shape)》 image.png

一、FlatButton

类似于安卓原生的 Button,但是缺点是需要通过给他套一个容器来处理 圆角的问题。

new Container(

margin: EdgeInsets.only(top: 20.0),

child: FlatButton(onPressed: null,child: Text("FlatButton.",style: TextStyle(color: Colors.white),),),

decoration: new BoxDecoration(

color: Colors.blueAccent,

borderRadius: new BorderRadius.all(

  const Radius.circular(8.0),

),

),

padding: new EdgeInsets.all(8.0),

),

《Flutter 给控件加圆角 (类似 Android 中的 shape)》 image.png

二、通过 Material 给 Text 添加

设置的时候因为 Text 不能给自己设置内边距,故在他的上边又嵌套一个 Container 来处理,详细看注释

代码如下:

new Material(

color: Colors.blueAccent,//设置控件的背景色

child: Padding(

  padding: EdgeInsets.all(6.0),//只是为了给 Text 加一个内边距,好看点~

  child: Text(

  "click",

  style: TextStyle(color: Colors.white, fontSize: 60.0),

),

  ),

borderRadius: BorderRadius.circular(10.0),//设置矩形的圆角弧度,具体根据 UI 标注为准

shadowColor: Colors.grey,//可以设置 阴影的颜色

elevation: 5.0,//安卓中的井深(大概就是阴影颜色的深度吧╮(╯▽╰)╭)

)

当然了,如果打算给你的这个控件添加点击事件,可以用系统提供的 GestureDetector 来处理,具体请参考:https://docs.flutter.io/flutter/widgets/GestureDetector-class.html

《Flutter 给控件加圆角 (类似 Android 中的 shape)》 image.png

三、通过装饰器给 Image 添加

同时可以处理成圆形的图片

Container(

width: 300.0,

height: 150.0,

decoration: BoxDecoration(

  image: DecorationImage(

  image: AssetImage("values/mipmap/lake.jpg"),

  fit: BoxFit.cover,

),

borderRadius: BorderRadius.all(

  Radius.circular(10.0),

  ),

),

)

《Flutter 给控件加圆角 (类似 Android 中的 shape)》 image.png

new Container(

margin: EdgeInsets.only(top: 20.0),

child: new Text(

  “Text Info",

),

decoration: new BoxDecoration(

color: Colors.red[400],

borderRadius: new BorderRadius.all(

  const Radius.circular(8.0),

),

),

padding: new EdgeInsets.all(16.0),

),

《Flutter 给控件加圆角 (类似 Android 中的 shape)》 image.png

四、Button —RaisedButton

RaisedButton 自己有一个默认的背景色,还没找到怎么处理掉。。。希望有知道的大神告知一下~~~~

    原文作者:深蓝Skyy
    原文地址: https://www.jianshu.com/p/a110b6a11e2f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞