问题描述
我在这里不能使用将来的布尔。.在这种情况下,我有什么方法可以使用将来的布尔。 还是有更好的方法呢?
Widget _buildrow(String pair) {
final Future<bool> alreadySaved = DBHelper.getAllEmployees().then((value) => value.contains(pair));
print("Already saved $alreadySaved");
print(pair);
return FutureBuilder(
future: DBHelper.getAllEmployees(),builder: (context,AsyncSnapshot<List<FavrtTableModel>> snapshot) =>
snapshot.connectionState == ConnectionState.waiting ? Center(
child: Icon(Icons.more_horiz),):IconButton(
icon: new Icon(
alreadySaved ? Icons.favorite : Icons.favorite_border,color:alreadySaved? Colors.red : Colors.white,),onpressed: (){
setState(() {
if (alreadySaved) {
_saved.remove(pair);
_deleteEmployee(pair);
} else {
_saved.add(pair);
_insert(pair);
}
});
},);
}
解决方法
在initState()
中使用,例如
bool alreadySaved = false;
@override
void initState() {
super.initState();
String pair = "pair_value";
DBHelper.getAllEmployees().then((value) {
setState(() {
alreadySaved = value.contains(pair);
});
});
}