flutter ui html,FlutterUI-自定义Button

Flutter版本-v1.0.0

按钮控件常用api

常用普通圆角按钮

常用按钮的写法,很简单也很美观。

new RaisedButton(

child: new Text("登录"),

color: Colors.blue,

textColor: Colors.white,

onPressed: () {

_login();

},

disabledColor: Colors.grey,

disabledTextColor: Colors.white,

disabledElevation: 4,

// onPressed: null,// 设置为null即为不可点击(disabled)状态

shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0)), //圆角大小

),

效果:

52b873d891f0

普通圆角按钮

但是UI稿往往会出现各种按钮,所以又会踩坑

图片+文字按钮

用InkWell + Stack来形成层级

new InkWell(

child: new Stack(

alignment: Alignment.center,

children: [

new Image.asset("images/ic_launcher_round.png"),

new Text("登录",

style: new TextStyle(

fontSize: 24,

fontWeight: FontWeight.bold,

color: Colors.red

),),

],

),

onTap: () { },

),

效果:

52b873d891f0

图片+文字按钮

渐变色+圆角+文字 按钮

这个看似也容易,但由于RawMaterialButton有最小宽高,如果child宽高较小,会出现多余的灰色背景,例如:

52b873d891f0

child宽高较小

用了InkWell + Container的方案,结果也不理想,因为没有点击的阴影效果,波纹作用于背景也不明显。

查阅了很多,最终找到了buttonTheme这个属性,可以在MaterialApp的theme里设置即可作用全局,使全局的button都没有最小宽高。

void main() {

// debugPaintSizeEnabled=true;

runApp(new MaterialApp(

theme: new ThemeData(

primaryColor: AppColors.colorPrimary,

accentColor: Colors.blue,

buttonTheme: new ButtonThemeData(

minWidth: 0,

height: 0,

padding: EdgeInsets.all(0),

buttonColor: Colors.transparent

)),

home: new WanAndroidApp()));

}

然后再运用RaisedButton + Container即可达到渐变色+圆角+文字 按钮的效果,同理其他特殊的按钮均可按此实现。

new RaisedButton(

child: new Container(

decoration: BoxDecoration(

border: Border.all(color: Colors.red, width: 1.0),

borderRadius: BorderRadius.circular(8.0),

gradient: LinearGradient(colors: [

Colors.orange,

Colors.blue,

]),

),

child: new Text("登录"),

padding: EdgeInsets.fromLTRB(16, 8, 16, 8),

alignment: Alignment.center,

),

shape: RoundedRectangleBorder(

borderRadius: BorderRadius.circular(8.0)), //圆角大小,与BoxDecoration保持一致,更美观

onPressed: () {},

textColor: Colors.white,

),

效果:

52b873d891f0

渐变色+圆角+文字 按钮

至此,大部分的Button样式应该都可以实现了~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值