有没有办法全局删除 Flutter 应用程序中的所有阴影?我想在一个地方这样做,而不是elevation: 0
为所有 MaterialButtons、ElevatedButtons 等设置。我想设置主题,或者以另一种方式做,但全局在一个地方。
我正在寻找 中的属性ThemeData
,但找不到所需的属性,例如 MaterialButtons。
有没有办法全局删除 Flutter 应用程序中的所有阴影?我想在一个地方这样做,而不是elevation: 0
为所有 MaterialButtons、ElevatedButtons 等设置。我想设置主题,或者以另一种方式做,但全局在一个地方。
我正在寻找 中的属性ThemeData
,但找不到所需的属性,例如 MaterialButtons。
你在正确的轨道上,ThemeData 有一个 ElevatedButtons 的属性,我做了一个小例子,说明你需要什么来删除基于 MaterialStateProperty 的阴影:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
//this is the function that deletes shadows
double getElevation(Set<MaterialState> states) {
return 0;
}
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.light().copyWith(
//this is the property that affects elevated buttons
elevatedButtonTheme: ElevatedButtonThemeData(
style: ButtonStyle(
elevation: MaterialStateProperty.resolveWith(getElevation)))),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: MyWidget(),
),
),
);
}
}
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
//this button doesn't have a shadow
return ElevatedButton(
child: const Text("HEY!"),
onPressed: () {},
);
}
}
解决方案非常简单,
ThemeData(
shadowColor: Colors.transparent,
);
完成工作