Android 即使调用setState,抽头后颤振开关也不会改变
我试图模仿颤振画廊应用程序选项的背景。我有它的工作,除了选择设置黑暗的主题是改变主题只有一次,然后陷入黑暗模式那里 开关状态总是显示为false 源代码可在以下位置获得: 不确定提供任何代码片段是否会有帮助,因为问题似乎不清楚,但下面是构建小部件的部分Android 即使调用setState,抽头后颤振开关也不会改变,android,flutter,Android,Flutter,我试图模仿颤振画廊应用程序选项的背景。我有它的工作,除了选择设置黑暗的主题是改变主题只有一次,然后陷入黑暗模式那里 开关状态总是显示为false 源代码可在以下位置获得: 不确定提供任何代码片段是否会有帮助,因为问题似乎不清楚,但下面是构建小部件的部分 class _ThemeItem extends StatelessWidget { const _ThemeItem(this.options, this.onOptionsChanged); final Options option
class _ThemeItem extends StatelessWidget {
const _ThemeItem(this.options, this.onOptionsChanged);
final Options options;
final ValueChanged<Options> onOptionsChanged;
@override
Widget build(BuildContext context) {
String title = 'Dark Theme';
return _BooleanItem(
title, options.theme == kDarkGalleryTheme, (bool value) =>
change(value), switchKey: const Key('dark_theme'),
);
}
class\u ThemeItem扩展了无状态小部件{
const\u ThemeItem(this.options,this.onoptions已更改);
最后选择;
更改选项时的最终值已更改;
@凌驾
小部件构建(构建上下文){
字符串标题='暗主题';
返回布尔项(
title,options.theme==kDarkGalleryTheme,(bool值)=>
更改(值),开关键:常量键('dark_theme'),
);
}
我想你应该使用StatefulWidget而不是无状态widget,因为你将要更改交换机的状态。我确实考虑过这一点,但是gallery示例也使用无状态widget。因此,这里似乎还有其他问题。你能发送完整的代码吗,我在你发布的代码中看不到switch widgetgithub repo中实际上有ull代码。我最终能够解决它,但仍然不太了解问题的根本原因。我发现,当我更改路由以加载主页而不是spash屏幕时,行为按预期工作。然后,我更改了路由代码,它成功地工作了。如何我一直都不明白为什么之前它不起作用。我想你应该使用StatefulWidget而不是无状态widget,因为你要更改开关的状态。我确实考虑过这个问题,但是gallery示例也使用无状态widget。所以这里似乎还有其他问题。你能发送完整的代码吗,我在你发布的代码中看不到switch小部件。完整的代码实际上可以在github repo中找到。我最终能够解决它,但仍然不太了解问题的根本原因。我发现,当我更改路由以加载主页而不是spash屏幕时,行为按预期工作。然后我更改了路由代码,它成功地工作了。但是我仍然不明白为什么它没有工作。