Flutter:OutlinedButtonThemeData中BorderSide被忽略,如何在主题内自定义?
你遇到的问题是因为OutlinedButton的边框样式并不通过shape属性里的side参数控制,这个参数会被组件默认的边框样式覆盖。正确的做法是直接在ButtonStyle中单独设置side属性:
outlinedButtonTheme: OutlinedButtonThemeData( style: ButtonStyle( shape: MaterialStateProperty.resolveWith((states) { return RoundedRectangleBorder( borderRadius: BorderRadius.zero, ); }), // 在这里单独设置边框样式,不会被默认值覆盖 side: MaterialStateProperty.resolveWith((states) { return BorderSide(color: Colors.red, width: 2.0); }), // 如果不需要根据状态变化,也可以直接用all简化 // side: MaterialStateProperty.all(BorderSide(color: Colors.red, width: 2.0)), ), ),
原理说明:OutlinedButton的主题样式设计中,边框是作为独立的side属性存在的,而shape里的side更多是用于自定义形状时的辅助设置,优先级低于ButtonStyle的side属性。所以把边框样式移到ButtonStyle层级下就能生效。
内容的提问来源于stack exchange,提问作者Florian
相关产品推荐
相关产品推荐

