Jona
Jona

Reputation: 315

Switch if enabled

I have a simple Switch in my Drawer:

SwitchListTile(
  title: Text("Dark Theme"),
  value: darkThemeEnabled,
  onChanged: (darkThemeEnabled) {
               if (darkThemeEnabled) {
                  _themeChanger.setTheme(ThemeData.dark());
                } else {
                  _themeChanger.setTheme(AppTheme.light);
                }
)

When I enable my Switch it changes to my dark theme, but how can I change it back? How can I run something on disabling? I know it must be pretty simple, but I'm currently stuck.

Upvotes: 1

Views: 280

Answers (2)

Can
Can

Reputation: 1876

SwitchListTile widget itself doesn't manage state. You can create a StatefulWidget and call setState to update the UI.

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;
        });
      },
    );
  }
}

Upvotes: 2

Mahmoud Salah Eldin
Mahmoud Salah Eldin

Reputation: 2108

SwitchListTile(
  title: Text("Dark Theme"),
  value: darkThemeEnabled,
  onChanged: (){
    if(darkThemeEnabled)
      doSometing();
  }
)

Upvotes: 0

Related Questions