检查sqlite数据库以确定图标的颜色

问题描述 投票:1回答:1

我有一个数据库,我存储喜欢的文章的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'
sqlite dart flutter
1个回答
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);
    }
},
© www.soinside.com 2019 - 2024. All rights reserved.