Flutter,如何使用本地数据库实现“收藏夹”

sycxhyv7  于 2023-02-05  发布在  Flutter
关注(0)|答案(3)|浏览(173)

我想在我的应用程序中实现“收藏夹”,数据卡中有一个“收藏夹”图标,允许用户标记或取消标记收藏夹。有读取本地数据库的功能,以查看记录是否被标记并显示相应的图标。

Widget setFavouriteIcon(_id) {
  bool marked = markedFavourites(_id);
  if (marked == true) {
    return GestureDetector(
      onTap: (){
        addFavourites(_id);
      },
      child: Icon(
        size: 24,
        Icons.favorite_border_outlined,
        color: Colors.red,
      ),
    );
  }else{
    return GestureDetector(
      onTap: (){
        removeFavourites(_id);
      },
      child: Icon(
        size: 24,
        Icons.favorite,
        color: Colors.red,
      ),
    );
  }
}

markedFavourites()假设是一个异步函数来读取本地数据库,但是我得到了一个编译错误:不能将"Future“类型的值赋给”bool“类型的变量。
我应该如何从一个未来得到一个布尔值?

qnakjoqk

qnakjoqk1#

为了从将来返回的函数中获取一个bool值,你需要await它,你的函数需要返回一个Future<bool>(bool类型的将来)。检查你的函数返回类型是什么,然后在你的代码中await它,比如bool marked = await markedFavourites(_id);。并且把你的setFavouriteIcon(_id)函数标记为async,比如Widget setFavouriteIcon(_id) async {

omjgkv6w

omjgkv6w2#

您可以得到如下响应:
已标记的未来=等待已标记的收藏夹(_id);之后,只需检查标记是否为空,之后,以与使用代码相同的方式执行操作

bybem2ql

bybem2ql3#

是的,你应该和.then()或者async``await一起使用来插入未来的值到变量中。

markedFavourites(_id).then((value)
     {bool marked = value}
);

像这样写。

相关问题