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

Flutter中如何将RaisedButton升级为ElevatedButton?

解决ElevatedButton中padding、color和textColor的配置问题

在Flutter里RaisedButton已被弃用,替代它的ElevatedButton要求所有样式属性都通过ButtonStyle统一配置。你需要把padding、color和textColor迁移到ButtonStyle内部,对应关系和配置方式如下:

  • 原padding → ButtonStyle的padding属性
  • 原color(按钮背景色)→ ButtonStyle的backgroundColor属性
  • 原textColor(文本颜色)→ ButtonStyle的foregroundColor属性

修正后的完整代码:

ElevatedButton(
  child: Text(_authMode == AuthMode.Login ? 'LOGIN' : 'SIGN UP'),
  onPressed: _submit,
  style: ButtonStyle(
    // 按钮圆角形状配置
    shape: MaterialStateProperty.all<RoundedRectangleBorder>(
      RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(30),
      ),
    ),
    // 内边距配置
    padding: MaterialStateProperty.all<EdgeInsets>(
      EdgeInsets.symmetric(horizontal: 30.0, vertical: 8.0),
    ),
    // 按钮背景色配置
    backgroundColor: MaterialStateProperty.all<Color>(
      Theme.of(context).primaryColor,
    ),
    // 按钮文本颜色配置
    foregroundColor: MaterialStateProperty.all<Color>(
      Theme.of(context).primaryTextTheme.button.color!,
    ),
  ),
)

额外说明:

  • ButtonStyle的所有属性都需要用MaterialStateProperty.all()包裹,这是为了支持根据按钮状态(如按下、悬浮)设置不同样式;如果不需要区分状态,直接用all()统一设置即可。
  • Theme.of(context).primaryTextTheme.button.color可能返回null,建议添加空断言!(或根据业务场景做非空判断处理)。

内容的提问来源于stack exchange,提问作者best_of_man

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:30:58