我有一个数据库,我存储喜欢的文章的ID,我创建了一个函数,以检查表中是否存在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);
}
},
);
},
这是decisionColor()代码,用于检查DB中是否存在id:
decideColor(int idArticle){
if (DBProvider.db.existFavoris(idArticle)){
return Color(0xffffD700);
}
return Colors.white;
}
我一直收到这个错误:
type 'Future<dynamic>' is not a subtype of type 'bool'
我看到你的existFavoris
是异步的,然后它至少会返回Future。您必须等待该函数的响应。
让onPressed
异步并等待existFavoris
onPressed: () async {
var exists = await DBProvider.db.existFavoris(idArticle);
if(exists){
DBProvider.db.removeFromFavoris(idArticle);
} else {
DBProvider.db.addToFavoris(idArticle);
}
},