Flutter中如何将RaisedButton升级为ElevatedButton?
在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
相关产品推荐
相关产品推荐

