gpt4 book ai didi

ios - 根据 iOS 环境主题自动在浅色和深色之间更改 iOS 应用程序主题

转载 作者:行者123 更新时间:2023-11-29 05:08:23 25 4
gpt4 key购买 nike

好的,所以我之前对这个特定主题做了相当多的研究,并且我知道 Flutter 开发人员尚未实现自动运行的功能(将浅色和深色主题设置为打开应用程序时动态检查更改)但我知道这是可能的。我不希望我的用户需要做出这样的选择,而且我知道我已经很接近了,但我错过了一些重要的东西。我来解释一下:

final Brightness brightnessValue = MediaQuery.of(context).platformBrightness;
bool isDark = brightnessValue == Brightness.dark;

这两行代码应该通过 bool 值(深色主题 true 或 false)传递到我的代码中。这些代码行正在运行,但它们会抛出错误。

使用不包含 MediaQuery 的上下文调用 MediaQuery.of()。从传递给 MediaQuery.of() 的上下文开始,找不到 MediaQuery 祖先。发生这种情况的原因是您没有 WidgetsApp 或 MaterialApp 小部件(这些小部件引入了 MediaQuery),或者如果您使用的上下文来自这些小部件之上的小部件,则可能会发生这种情况。)。使用的上下文是:我的应用程序也可以看看: https://flutter.dev/docs/testing/errors

现在我已经看到一些人实现了这行代码并且它对他们有用,所以我知道这不是语法问题。实际上,我按照他们的要求将这行代码放在小部件应用程序下面(据我了解这些事情,所以我遇到了困难。

相关代码:

CupertinoThemeData currentTheme;
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {

final Brightness brightnessValue = MediaQuery.of(context).platformBrightness;
bool isDark = brightnessValue == Brightness.dark;
<CODE TO SELECT THEME DEPENDING ON PHONE'S THEME. Setting parameters of currentTheme>

return CupertinoApp(
<CODE FOR APP>
),
}
}

现在我会把它放在 CupertinoApp Widget 中,但这也不起作用,因为你不能真正在其中进行函数调用,而且我需要将主题传递到那里,因为这会影响整体节目主题。

本质上,它看起来像先有鸡还是先有蛋的情况,在有媒体查询之前我无法设置主题,并且在设置主题之前我无法进行媒体查询,这否定了查询的整个目的。

有什么想法吗?

最佳答案

在我的头撞到砖墙上几个小时后,终于弄清楚了(对于其他有类似问题的人)。

诀窍是,是的,您实际上需要将选择主题的代码放在行内

return CupertinoApp( <Here> )

您可以通过以下方式执行此操作:

builder: (BuildContext context, Widget child) {

final Brightness brightnessValue = MediaQuery.of(context).platformBrightness;
bool isDark = brightnessValue == Brightness.dark;

// All your code to set your two themes, light and dark can go here.

}

这样,您就可以在需要时设置主题状态,而不是我想象的先有鸡还是先有蛋的场景。

希望这对某人有帮助。

关于ios - 根据 iOS 环境主题自动在浅色和深色之间更改 iOS 应用程序主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59937931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com