0

有没有办法全局删除 Flutter 应用程序中的所有阴影?我想在一个地方这样做,而不是elevation: 0为所有 MaterialButtons、ElevatedButtons 等设置。我想设置主题,或者以另一种方式做,但全局在一个地方。

我正在寻找 中的属性ThemeData,但找不到所需的属性,例如 MaterialButtons。

4

2 回答 2

0

你在正确的轨道上,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: () {},
    );
  }
}
于 2021-10-11T21:08:36.777 回答
0

解决方案非常简单,

ThemeData(
   shadowColor: Colors.transparent,
);

完成工作

于 2021-10-13T20:40:21.563 回答