Flutter应用如何全局移除所有投影阴影 无需逐个设置组件elevation为0
全局移除Flutter应用所有投影阴影的解决方案
仅移除所有按钮类组件阴影
你可以在根MaterialApp的ThemeData中统一配置各类按钮的默认elevation属性,无需逐个给组件传值:
MaterialApp( theme: ThemeData( // 适配 ElevatedButton elevatedButtonTheme: ElevatedButtonThemeData( style: ButtonStyle( elevation: MaterialStateProperty.all(0), ), ), // 适配 OutlinedButton outlinedButtonTheme: OutlinedButtonThemeData( style: ButtonStyle( elevation: MaterialStateProperty.all(0), ), ), // 适配旧版 MaterialButton materialButtonTheme: MaterialButtonThemeData( elevation: 0, highlightElevation: 0, disabledElevation: 0, ), // 其他用到的按钮类型可按相同逻辑补充,比如FilledButtonTheme、TextButtonTheme等 ), home: const MyHomePage(), );
全局移除所有Material组件阴影
如果需要连Card、Dialog、AppBar等所有带默认阴影的Material组件的投影一起移除,可以直接把主题的阴影颜色设为透明,所有默认组件的阴影都会直接失效:
MaterialApp( theme: ThemeData( shadowColor: Colors.transparent, // 其他主题配置 ), home: const MyHomePage(), );
注:如果个别组件单独自定义了
shadowColor或elevation属性,优先级会高于全局主题配置,这类组件需要单独调整即可。
内容的提问来源于stack exchange,提问作者jakub
相关产品推荐
相关产品推荐

