# Flutter on iOS: themeMode does not change to dark mode if ThemeMode.system is used

In my case, a simple app should automatically use the theme (light or dark) of the system to style the user interface. By default, this should work when using ThemeMode.system (see flutter documentation). But it didn’t.

The themes have been defined as follows:

    return MaterialApp(
themeMode: ThemeMode.system,
theme: ThemeData( ... ),
darkTheme: ThemeData( ...),
...
);


In addition, the WidgetsBindingObserver callback didChangePlatformBrightness() was never called. It was defined as follows:

class MyHomePageState extends State<MyHomePage> with WidgetsBindingObserver
{
@override
void initState() {
super.initState();
}

@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}

@override
void didChangePlatformBrightness() {
print(WidgetsBinding.instance.window.platformBrightness);
// > should print Brightness.light / Brightness.dark when you switch
super.didChangePlatformBrightness();
}
}


After hours and days of searching, it turned out, that the following definition was set in info.plist of iOS:

<key>UIUserInterfaceStyle</key>
<string>Light</string>


Removing this line solved the issue. This setting sets the apps theme to Light, which results in a constant value even if the user changed the brightness to dark. Without this line, UIUserInterfaceStyle depends on the global setting.