0

我有一个切换应用程序主题的开关,但代码有一些错误

Switch(value: AppStyleMode.isSwitched, onChanged: (value)=> AppStyleMode.switchMode())

我的主题文件

 import 'package:flutter/material.dart';

    class AppStyleMode extends ChangeNotifier {
      bool isSwitched = true; 
      Color primaryBG = Colors.white;
      Color appBarBG = Colors.yellow;
      
    
      switchMode() {
        if (isSwitched == true) {
          primaryBG = Colors.black];
          appBarBG = Colors.grey[400];
         
          isSwitched = false;
        } else {
          //if it is dark mode currently switch to light
          primaryBG = Colors.white;
          appBarBG = Colors.yellow;
      
          isSwitched = true;
        }
    
        notifyListeners();
      }
    }

开关错误:

开关错误

4

1 回答 1

0

如果您没有使用任何特定的状态管理包,

首先,您必须创建一个AppStyleMode类的实例,以便您可以使用其中的值并监听它的变化。

假设你有一个StatefulWidget

首先定义你AppStyleModeState

class MyState extends State<MyStatefulWidget> {

  late AppStyleMode appStyleMode;

然后在你的initState,初始化它并添加一个监听器。

void initState () {
  super.initState();
  
  appStyleMode = AppStyleMode();

  // Also add a listener to it and call setState to rebuild your StatefulWidget
  appStleMode.addListener(() => {
    setState(() {});
  });
}

然后你可以通过像这样build使用你的变量来使用它,appStyleMode

Switch(value: appStyleMode.isSwitched, onChanged: (value) => appStyleMode.switchMode())

我宁愿建议您研究像providerGetx这样的状态管理解决方案。但这不是强制性的。

于 2021-06-03T05:53:22.617 回答