我有一个数据库,我在其中存储喜欢的文章的ID,并创建了一个函数来检查表Favoris中的ID是否存在:
existFavoris(int idArticle) async{
final db = await database;
var res =await db.query("Favoris", where: "idArticle = ?", whereArgs: [idArticle]);
return res.isNotEmpty;
}
我创建了一个按钮,用于从表中添加/删除ID
StatefulBuilder(
builder: (BuildContext context, StateSetter setState){
return new IconButton(
icon: new Icon(
Icons.star,
color: decideColor(idArticle)
),
onPressed: (){
if(DBProvider.db.existFavoris(idArticle)){
DBProvider.db.removeFromFavoris(idArticle);
}
else {
DBProvider.db.addToFavoris(idArticle);
}
},
);
},
这是用来检查ID是否存在于数据库中的DecisionColor()代码:
decideColor(int idArticle){
if (DBProvider.db.existFavoris(idArticle)){
return Color(0xffffD700);
}
return Colors.white;
}
我不断收到此错误:
type 'Future<dynamic>' is not a subtype of type 'bool'
答案 0 :(得分:1)
我看到您的existFavoris
是异步的,那么它至少返回Future。您必须等待该功能的响应。
使onPressed
异步并等待existFavoris
onPressed: () async {
var exists = await DBProvider.db.existFavoris(idArticle);
if(exists){
DBProvider.db.removeFromFavoris(idArticle);
} else {
DBProvider.db.addToFavoris(idArticle);
}
},