我有一个数据库,我在其中存储最喜欢的文章的 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 是否存在于数据库中的 decideColor() 代码:
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);
}
},
关于sqlite - 检查sqlite数据库来决定图标的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55161171/