You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Flutter TextField设置圆角下划线输入边框?

实现Flutter TextField带圆角的下划线边框

要给Flutter的TextField设置带圆角的下划线输入边框,这里有两种实用方案:

方案一:直接修改UnderlineInputBorder的圆角

UnderlineInputBorder本身支持通过borderRadius参数设置底部左右的圆角,这是最直接的实现方式:

TextField(
  decoration: InputDecoration(
    hintText: "请输入内容",
    // 未获取焦点时的边框样式
    enabledBorder: UnderlineInputBorder(
      borderSide: BorderSide(color: Colors.grey.shade400, width: 1.5),
      borderRadius: BorderRadius.only(
        bottomLeft: Radius.circular(8),
        bottomRight: Radius.circular(8),
      ),
    ),
    // 获取焦点时的边框样式
    focusedBorder: UnderlineInputBorder(
      borderSide: BorderSide(color: Colors.blue, width: 2),
      borderRadius: BorderRadius.only(
        bottomLeft: Radius.circular(8),
        bottomRight: Radius.circular(8),
      ),
    ),
  ),
)

方案二:用OutlineInputBorder模拟下划线效果

如果需要更灵活的边框控制(比如偶尔需要显示其他边的边框),可以用OutlineInputBorder隐藏其他边,只保留底部:

TextField(
  decoration: InputDecoration(
    hintText: "请输入内容",
    enabledBorder: OutlineInputBorder(
      borderSide: BorderSide(color: Colors.transparent),
      borderRadius: BorderRadius.circular(8),
    ),
    focusedBorder: OutlineInputBorder(
      borderSide: BorderSide(color: Colors.transparent),
      borderRadius: BorderRadius.circular(8),
    ),
    // 单独设置底部边框
    border: OutlineInputBorder(
      borderRadius: BorderRadius.circular(8),
      borderSide: BorderSide(color: Colors.grey.shade400, width: 1.5),
    ),
    contentPadding: EdgeInsets.only(bottom: 10), // 调整内边距,避免文字紧贴边框
  ),
)

全局统一样式(可选)

如果你的App里多个TextField都需要这个样式,可以在ThemeData中全局配置,不用每个TextField单独写:

MaterialApp(
  theme: ThemeData(
    inputDecorationTheme: InputDecorationTheme(
      enabledBorder: UnderlineInputBorder(
        borderSide: BorderSide(color: Colors.grey.shade400),
        borderRadius: BorderRadius.only(
          bottomLeft: Radius.circular(8),
          bottomRight: Radius.circular(8),
        ),
      ),
      focusedBorder: UnderlineInputBorder(
        borderSide: BorderSide(color: Colors.blue),
        borderRadius: BorderRadius.only(
          bottomLeft: Radius.circular(8),
          bottomRight: Radius.circular(8),
        ),
      ),
    ),
  ),
  home: YourHomePage(),
)

内容的提问来源于stack exchange,提问作者Justin Hüsges

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 22:25:18