失败的断言:布尔表达式不能为空颤振

问题描述

我正在尝试获取开关状态,但它一直向我显示错误 失败的断言:布尔表达式不能为空

这是我如何通过将开关状态保存到共享首选项并取回值来获得它

  bool availability;
  
  
  Future<bool> getSwitchState() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
      availability = prefs.getBool('isAvailable') ??false;
    });
  }
  
  
 // and this how i save the switch state when it is changed 
  
  
   Future<bool> savingSwitchValue(bool value) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    return prefs.setBool('isAvailable',value);
  }
  
     CustomSwitch(
                  value: availability,onChanged: (value) {
                    if (availability == false) {
                      setState(() {
                        availability = true;
                        savingSwitchValue(value);
                        print('this is true');
                        goOnline();
                        getLocationUpdates();
                      });
                    } else {
                      setState(() {
                        availability = false;
                        savingSwitchValue(value);
                        print('this is false');
                        goOffline();
                      });
                    }
                  },activeColor: Colors.green,),
我该如何解决这个问题

解决方法

您应该在第一行代码中为可用性变量指定一个默认值。

它出错了,因为你在给它赋值之前就在使用它。