我正在尝试从shared preferences
中读取内容,但被卡住了。我遇到了这个错误,而且我不知道如何处理:
A value of type 'Future<bool>' can't be assigned to a variable of type 'bool'
我的代码如下:
onTap: () {
setState(() {
if (_getPref()) { //here occurs the error
_stateColor = _disableColor;
_setPref(false);
} else {
_stateColor = _enableColor;
_setPref(true);
}
});
},
方法:
Future<bool> _getPref() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
bool value = prefs.getBool(widget.myIndex) ?? false;
return value;
}
如果有人能帮助我,我将不胜感激!
答案 0 :(得分:1)
您必须使用await
函数_getPref()
,因为它会返回将来的Future<bool>
onTap: () async {
if (await _getPref()) { //here occurs the error
_stateColor = _disableColor;
_setPref(false);
} else {
_stateColor = _enableColor;
_setPref(true);
}
setState(() {});
},
答案 1 :(得分:0)
有两种方法,你可以做到。
使用async-await
:
void func() async {
bool value = await _getPref();
setState(() {
_value = value;
});
}
使用then
void func() {
_getPref().then((value) {
setState(() {
_value = value;
});
});
}