Back to results for “Responsive UI”
Flutter › App Theming & Dark Mode

How do you implement dark mode support in a Flutter app, letting the app automatically switch its appearance based on the device's system wide dark mode setting?

Beginner

Answer

Flutter lets you define two separate ThemeData objects, one representing your app's light mode appearance and another representing its dark mode appearance, and by providing both to your MaterialApp widget through the theme and darkTheme properties, along with setting themeMode to system, your app will automatically switch between the two based on whatever dark or light mode setting the user has currently selected at the operating system level, without requiring any additional custom logic to detect that system setting yourself.
MaterialApp(
  theme: ThemeData.light(),
  darkTheme: ThemeData.dark(),
  themeMode: ThemeMode.system,
)
Real-world example A news reading app automatically switches to a comfortable dark theme in the evening when a user has enabled dark mode at the system level on their phone, without the user needing to manually toggle any setting within the app itself.

Common follow-ups: How do you let a user manually override the system theme setting from within your own app?;What Flutter widget lets you detect whether the app is currently displaying in dark mode?