Asynchronous 如何确定未来<;布尔>;使用共享首选项库时颤振省道中的vs bool错误?
我对flatter还很陌生,而且我对异步编码几乎没有经验,所以我很难将我读过的文章应用到我当前的代码中。我试图保存开关是否已切换的值,并使用该值确定其状态。如何修复未来bool vs bool错误Asynchronous 如何确定未来<;布尔>;使用共享首选项库时颤振省道中的vs bool错误?,asynchronous,flutter,dart,Asynchronous,Flutter,Dart,我对flatter还很陌生,而且我对异步编码几乎没有经验,所以我很难将我读过的文章应用到我当前的代码中。我试图保存开关是否已切换的值,并使用该值确定其状态。如何修复未来bool vs bool错误 Widget learn(BuildContext context){ bool isSwitched = _read(); return Center( child: Switch( value: isSwitched, onChanged: (value)
Widget learn(BuildContext context){
bool isSwitched = _read();
return Center(
child: Switch(
value: isSwitched,
onChanged: (value) {
_save(value);
print(isSwitched);
},
activeTrackColor: Colors.lightGreenAccent,
activeColor: Colors.green,
),
);
}
Future<bool> _read() async {
final prefs = await SharedPreferences.getInstance();
final key = 'isSwitched';
final value = prefs.getBool(key) ?? false;
return value;
}
_save(bool boo) async {
final prefs = await SharedPreferences.getInstance();
final key = 'isSwitched';
final value = boo;
prefs.setBool(key, value);
}
Widget学习(构建上下文){
bool isSwitched=_read();
返回中心(
孩子:开关(
值:已切换,
一旦更改:(值){
_保存(价值);
打印(isSwitched);
},
activeTrackColor:Colors.lightGreenAccent,
activeColor:Colors.green,
),
);
}
Future\u read()异步{
final prefs=wait SharedPreferences.getInstance();
最终键='isSwitched';
最终值=prefs.getBool(键)??错误;
返回值;
}
_保存(bool boo)异步{
final prefs=wait SharedPreferences.getInstance();
最终键='isSwitched';
最终值=boo;
prefs.setBool(键、值);
}
您的\u read返回一个未来,但您的已切换是一个布尔
然后您可以使用FutureBuilder
Widget learn(BuildContext context){
return Center(
child: FutureBuilder(
future: _read(),
builder: (context, snapshot){
if(snapshot.hasData){
return Switch(
value: snapshot.data,
onChanged: (value) {
_save(value);
print(snapshot.data);
},
activeTrackColor: Colors.lightGreenAccent,
activeColor: Colors.green,
);
}else{
return CircularProgressIndicator();
}
},
),
);
}
谢谢你的及时帮助。不幸的是,当我把它变成一个异步函数时,“learn(BuildContext){”返回了一个Future,这导致了一个错误。我该如何修复这个问题?