检测是否从Flutter / Dart启用了iOS13黑暗模式

时间:2019-08-13 10:13:37

标签: ios flutter dart ios-darkmode

我正在编写适用于Android和iOS的Flutter应用,该应用将根据iOS的黑暗模式状态更改其样式/主题。

当前在Flutter中是否有类似MediaQuery.isDarkModeEnabled的东西?

here上有一个GitHub问题,但Flutter团队必须在问题上不知所措,所以我看不到这个问题实施得太早。

我可以通过iOS特定的代码通道使用'traitCollection.userInterfaceStyle',但是我对使用Flutter / Dart应用程序添加特定于平台的代码不是很熟悉。目前正在研究此解决方案!

例如,某人可能有一个CupertinoPicker带有自适应颜色:

CupertinoPicker(
    backgroundColor: isDarkModeEnabled ? Colors.black : Colors.white,
    children: items.map((thisItem) => Text(thisItem.name)).toList(),
    itemExtent: 32,
    onSelectedItemChanged: (newItem) {
        setState(() => this.item = items[newItem]);
    }
)

3 个答案:

答案 0 :(得分:9)

您可以在此处为亮和暗模式设置不同的颜色,如果手机设置为暗模式或亮模式,应用程序将自动切换。

MaterialApp(
  theme: ThemeData(
    brightness: Brightness.light,
    primaryColor: Colors.red,
  ),
  darkTheme: ThemeData(
    brightness: Brightness.dark,
    // additional settings go here
  ),
);

答案 1 :(得分:1)

是的,有可能。在这里https://github.com/flutter/flutter/issues/33873#issuecomment-536309491 这就是答案。

if(ios13==true){
    bool qDarkmodeEnable;
    var qdarkMode = MediaQuery.of(context).platformBrightness;
    if (qdarkMode == Brightness.dark){
        qDarkmodeEnable=true;
    } else {
        qDarkmodeEnable=false;
    }
}

答案 2 :(得分:0)

实际上不是主频道,请看https://github.com/flutter/flutter/issues/39685