Flutter 如果启用,则切换

Flutter 如果启用,则切换,flutter,dart,Flutter,Dart,我的抽屉里有一个简单的开关: SwitchListTile( 标题:文本(“黑色主题”), 值:暗设为已启用, 一旦更改:(暗色显示){ 如果(暗设){ _setTheme(ThemeData.dark()); }否则{ _setTheme(AppTheme.light); } ) 当我启用开关时,它将更改为我的黑暗主题,但我如何才能将其更改回原来的状态?我如何才能在禁用时运行某些东西? 我知道它一定很简单,但我现在被卡住了。SwitchListTile小部件本身不管理状态。您可以创建一个St

我的抽屉里有一个简单的开关:

SwitchListTile(
标题:文本(“黑色主题”),
值:暗设为已启用,
一旦更改:(暗色显示){
如果(暗设){
_setTheme(ThemeData.dark());
}否则{
_setTheme(AppTheme.light);
}
)
当我启用开关时,它将更改为我的黑暗主题,但我如何才能将其更改回原来的状态?我如何才能在禁用时运行某些东西?
我知道它一定很简单,但我现在被卡住了。

SwitchListTile小部件本身不管理状态。您可以创建一个StatefulWidget并调用setState来更新UI

SwitchListTile(
  title: Text("Dark Theme"),
  value: darkThemeEnabled,
  onChanged: (){
    if(darkThemeEnabled)
      doSometing();
  }
)
class OnOff extends StatefulWidget {
  @override
  _OnOffState createState() => _OnOffState();
}

class _OnOffState extends State<OnOff> {
  bool flag = false;
  @override
  Widget build(BuildContext context) {
    return SwitchListTile(
      title: const Text('Change Me'),
      value: flag,
      onChanged: (bool value) {
        setState(() {
          flag = value;
        });
      },
    );
  }
}
类OnOff扩展了StatefulWidget{
@凌驾
_OnOffState createState()=>\u OnOffState();
}
类_OnOffState扩展了状态{
布尔标志=假;
@凌驾
小部件构建(构建上下文){
返回SwitchListTile(
标题:常量文本(“更改我”),
值:flag,
一旦更改:(布尔值){
设置状态(){
标志=值;
});
},
);
}
}

使用此选项,我可以在启用时运行某些内容,但如果禁用则无法运行。else doSometing2();请确保使用(setState)查看更改