jakub
jakub

Reputation: 3854

Globally remove all drop shadows in Flutter app?

Is there a way to globally remove all drop shadows in Flutter app? I would like to do that in single place instead of setting elevation: 0 for all MaterialButtons, ElevatedButtons, etc. I would like set theme, or do it another way, but globally in single palce.

I was looking for attributes in ThemeData, but can't find desired attributes, e.g. for MaterialButtons.

Upvotes: 0

Views: 749

Answers (2)

jakub
jakub

Reputation: 3854

The solution is pretty straightforward,

ThemeData(
   shadowColor: Colors.transparent,
);

gets the job done

Upvotes: 0

RegularGuy
RegularGuy

Reputation: 3686

You were on the right track, ThemeData has an attribute for ElevatedButtons, i have made a small example on what you need to remove shadows based on 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: () {},
    );
  }
}

Upvotes: 0

Related Questions