如何移除TextField的顶部边框并保留其余边框?TextFormField可行吗?
移除TextField顶部边框的实现方法
完全可以实现,不管是TextField还是TextFormField都能做到,因为它们的装饰配置是通用的。下面给你两种常用方案:
方案1:直接通过InputDecoration的Border配置
不需要额外嵌套组件,直接在InputDecoration里用Border替代原来的OutlineInputBorder,单独控制每条边框的显示:
TextField( decoration: InputDecoration( focusedBorder: Border( left: BorderSide(color: primaryColor), right: BorderSide(color: primaryColor), bottom: BorderSide(color: primaryColor), top: BorderSide.none, // 隐藏顶部边框 ), border: Border( left: BorderSide(color: primaryColor), right: BorderSide(color: primaryColor), bottom: BorderSide(color: primaryColor), top: BorderSide.none, ), contentPadding: EdgeInsets.symmetric(horizontal: 12, vertical: 10), // 可选,优化文字内边距 ), )
方案2:用Container包裹实现带圆角的效果
如果需要保留底部圆角(类似原OutlineInputBorder的圆角风格),可以用Container包裹TextField,给Container设置边框并隐藏顶部,同时把TextField本身的边框去掉:
Container( decoration: BoxDecoration( border: Border( left: BorderSide(color: primaryColor), right: BorderSide(color: primaryColor), bottom: BorderSide(color: primaryColor), top: BorderSide.none, ), borderRadius: BorderRadius.only( bottomLeft: Radius.circular(4), // 对应原OutlineInputBorder的圆角大小 bottomRight: Radius.circular(4), ), ), child: TextField( decoration: InputDecoration( border: InputBorder.none, // 去掉TextField自带边框 contentPadding: EdgeInsets.symmetric(horizontal: 12, vertical: 10), ), ), )
TextFormField的用法和TextField完全一致,直接把上面的TextField换成TextFormField即可,装饰配置不用改。
内容的提问来源于stack exchange,提问作者Moulik Gupta 50
相关产品推荐
相关产品推荐

